Em python

 

import smtplib
from email.mime.multipart import MIMEMultipart
 
msg = MIMEMultipart('alternative')

# É necessário informar ao SMTP qual método deseja usar
msg['send_method'] = 'template'

# O endereço de email tem que estar entre os caracteres <>. O nome pode estar do lado separado por um espaço
msg['recipient_list'] = "Destinatario1 <destinatario1@exemplo.com>"

# No envio de emails com template, o nome deste é obrigatório
msg['template_name'] = 'SLUG DO SEU TEMPLATE'

# O endereço de email do remetente segue a mesma regra que os emails dos destinatários
msg['from'] = 'Remetente <remetente@exemplo.com>'

# No 'context' estarão os valores globais, ou seja, todos os emails terão estes mesmos valores
msg['context'] = json.dumps({'foobar': True})

# No 'context_per_recipient' estarão os valores específicos por destinatário.
msg['context_per_recipient'] = json.dumps({'destinatario1@exemplo.com': {'foo': True}})
msg['context_per_recipient'] = json.dumps({'destinatario2@exemplo.com': {'bar': True}})
msg['subject'] = 'Apenas um teste'

# Caso os parâmetros 'message_text' e 'message_html' forem repassados, então essas mensagens serão enviadas
# sem usar o template. Mesmo assim, por questões de segurança, é necessário enviar o template.
msg['message_text'] = 'Apenas um teste'
msg['message_html'] = '<em>Apenas <strong>um</strong> teste</em>'

# Se o parâmetro 'use_template_subject' for passado como True, então 'subject' não precisa ser enviado
msg['use_template_subject'] = json.dumps(True)

# Se os parâmetros 'use_template_email' for enviado, então 'from' não precisa ser enviado
msg['use_template_email'] = json.dumps(True)

# Se o parâmetro 'use_template_from' for enviado, então o nome informado em 'from' será substituido
msg['use_template_from'] = json.dumps(True)

# Passe True nesse parâmetro para ativar o rastreio de visualização e clique do email
msg['activate_tracking'] = json.dumps(True)

# Passe True nesse parâmetro para extrair uma versão de texto simples do template
msg['get_text_from_html'] = json.dumps(True)

# No caso do SMTP e de destinatários que não terão nomes atrelados aos emails,
# é possível enviar desta outra forma
to_addrs = [
    "destinatario2@exemplo.com"
]

s = smtplib.SMTP('mittepro.alterdata.com.br', 25)
s.login('SUA CHAVE PÚBLICA', 'SUA CHAVE PRIVADA')
s.sendmail(msg['from'], to_addrs, msg.as_string())
s.quit()

Em NodeJS

 

var SMTPConnection = require('smtp-connection');
 
var self = {
    getParams: function () {
        var envelope = {
            from: 'remetente@exemplo.com',
 
            // No caso do SMTP, e de destinatários que não terão nomes atrelados aos emails,
            // é possível enviar desta outra forma
            to: [
                "<destinatario2@exemplo.com>"
            ]
        };
 
        // É necessário informar ao SMTP qual método deseja usar
        var msg = 'send_method: template \n\r';
        msg += 'username: SUA CHAVE PÚBLICA \n\r';
        msg += 'password: SUA CHAVE PRIVADA \n\r';
 
        // O endereço de email tem que estar entre os caracteres <>. O nome pode estar do lado separado por um espaço
        msg += 'recipient_list: "Destinatario1 <destinatario1@exemplo.com>" \n\r';
 
        // No envio de emails com template, o nome deste é obrigatório, sempre
        msg += 'template_name: SLUG DO SEU TEMPLATE \n\r';
 
        // O endereço de email do remetente segue a mesma regra que os emails dos destinatários
        msg += 'from: Remetente <remetente@exemplo.com> \n\r';
 
        // O 'context' são os valores globais, ou seja, todos os emails terão estes mesmos valores
        msg += 'context: ' + JSON.stringify({'foobar': true}) + ' \n\r';
 
        // O 'context_per_recipient' são os valores específicos por destinatário.
        msg += 'context_per_recipient: ' + JSON.stringify({'destinatario1@exemplo.com': {'foo': true}}) + ' \n\r';
        msg += 'context_per_recipient: ' + JSON.stringify({'destinatario2@exemplo.com': {'bar': true}}) + ' \n\r';
        msg += 'subject: Apenas um teste \n\r';
 
        // Se os parâmetros 'message_text' e 'message_html' forem enviados, então essas mensagens serão enviadas,
        // e o template não será usado. Mesmo assim, por questões de segurança, é necessário enviar o template.
        msg += 'message_text: Apenas um teste. \n\r';
        msg += 'message_html: <em>Apenas <strong>um</strong> teste</em>. \n\r';
 
        // Se o parâmetro 'use_template_subject' for passado como True, então 'subject' não precisa ser enviado
        msg += 'use_template_subject: true \n\r';
 
        // Se os parâmetros 'use_template_email' for enviado, então 'from' não precisa ser enviado
        msg += 'use_template_email: true \n\r';
 
        // Se o parâmetro 'use_template_from' for enviado, então o nome informado em 'from' será substituido
        msg += 'use_template_from: true \n\r';
 
        // Passe True nesse parâmetro para ativar o rastreio de visualização e clique do email
        msg += 'activate_tracking: true \n\r';
 
        // Passe True nesse parâmetro para extrair uma versão de texto simples do template
        msg += 'get_text_from_html: true \n\r';
 
        return {envelope: envelope, message: msg}
    },
    startConnection: function () {
        var connection = new SMTPConnection({
            port: 25,
            authMethod: 'LOGIN',
			host: 'mittepro.alterdata.com.br'
        });
        connection.connect(function () {
            var auth = {
                user: 'SUA CHAVE PÚBLICA',
                pass: 'SUA CHAVE PRIVADA'
            };
            connection.login(auth, function (err) {
                if (err) {
                    console.error(err);
                    connection.close();
                } else {
                    var params = self.getParams();
                    connection.send(params.envelope, params.message,
                        function (err, info) {
                            console.info('ERR:', err);
                            console.info('INFO', info);
                            connection.close();
                        }
                    )
                }
            })
        });
    }
};
 
self.startConnection();