Em python

 

import hmac
import time
import hashlib
import requests
from ordereddict import OrderedDict
 
 
timestamp = float(time.time())
auth_key = 'SUA CHAVE PÚBLICA'
secret = 'SUA CHAVE PRIVADA'
auth_data = {
    "auth_key": auth_key,
    "auth_timestamp": timestamp,
    "auth_version": "1.0",
}
data = {
    # O endereço de email tem que estar entre os caracteres <>. O nome pode estar do lado separado por um espaço
    u'recipient_list': [
        "Destinatario1 <destinatario1@exemplo.com>", "<destinatario2@exemplo.com>"
    ],
 
    # No envio de emails com template, o nome deste é obrigatório
    u'template_name': u'SLUG DO SEU TEMPLATE'
 
    # O endereço de email do remetente segue a mesma regra que os emails dos destinatários
    u'from': 'Remetente <remetente@exemplo.com>',
 
    # No 'context' estarão os valores globais, ou seja, todos os emails terão estes mesmos valores
    u'context': {'foobar': True},
 
    # No 'context_per_recipient' estarão os valores específicos por destinatário.
    u'context_per_recipient': {
        "destinatario1@exemplo.com": {"foo": True},
	    "destinatario2@exemplo.com": {"bar": True}
    },
    u'subject': u'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.
    u'message_text': u'Apenas um teste',
    u'message_html': u'<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
    u'use_template_subject': True,
 
    # Se os parâmetros 'use_template_email' for enviado, então 'from' não precisa ser enviado
    u'use_template_email': True,
 
    # Se o parâmetro 'use_template_from' for enviado, então o nome informado em 'from' será substituido
    u'use_template_from': True,
 
    # Passe True nesse parâmetro para ativar o rastreio de visualização e clique do email
    u'activate_tracking': True,
 
    # Passe True nesse parâmetro para extrair uma versão de texto simples do template
    u'get_text_from_html': True,
}
 
# Transformar o payload em Query String
auth_params_dict = OrderedDict(sorted(auth_data.items()))
params_list = []
for key, value in auth_params_dict.iteritems():
    params_list.append(self.encode_param_without_escaping(key, value))
msg_default = '&'.join(params_list)
 
data.update(auth_data)
params_dict = OrderedDict(sorted(data.items()))
 
# Criar a 'auth_signature'
hmac_dict = {
    'key': secret,
    'digestmod': hashlib.sha256
}
hmac_dict.update({'msg': 'POST\n/api/send_mail/template/\n' + msg_default})
auth_signature_post_text = hmac.new(**hmac_dict).hexdigest()
 
url_base = '{0}{1}?auth_key={2}&auth_timestamp={3}&auth_version=1.0&auth_signature={4}'
url_post_text = url_base.format(
    'http://mittepro.alterdata.com.br', '/api/send_mail/template/', auth_key, timestamp, auth_signature_post_text
)
response = requests.post(url_post_text, {}, params_dict)
emails = response.json()
print ""
print url_post_text
print emails

Em NodeJS

 

var _request = require('request');
var signature = require('apysignature');
var querystring = require("querystring");
 
var self = {
    _urlBase: 'http://mittepro.alterdata.com.br',
    _auth_key: 'SUA CHAVE PÚBLICA',
    _auth_secret: 'SUA CHAVE PRIVADA',
    _params: {
        // O endereço de email tem que estar entre os caracteres <>. O nome pode estar do lado separado por um espaço
        recipient_list: [
            "Destinatario1 <destinatario1@exemplo.com>", "<destinatario2@exemplo.com>"
        ],
 
        // No envio de emails com template, o nome deste é obrigatório, sempre
        template_name: "SLUG DO SEU TEMPLATE",
 
        // O endereço de email do remetente segue a mesma regra que os emails dos destinatários
        from: 'Remetente <remetente@exemplo.com>',
 
        // O 'context' são os valores globais, ou seja, todos os emails terão estes mesmos valores
        context: {'foobar': true},
 
        // O 'context_per_recipient' são os valores específicos por destinatário.
        context_per_recipient: {
            "destinatario1@exemplo.com": {"foo": True},
            "destinatario2@exemplo.com": {"bar": True}
        },
        subject: "Apenas um teste",
 
        // 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.
        message_text: "Apenas um teste",
        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
        use_template_subject: true,
 
        // Se os parâmetros 'use_template_email' for enviado, então 'from' não precisa ser enviado
        use_template_email: false,
 
        // Se o parâmetro 'use_template_from' for enviado, então o nome informado em 'from' será substituido
        use_template_from: false,
 
        // Passe True nesse parâmetro para ativar o rastreio de visualização e clique do email
        activate_tracking: true,
 
        // Passe True nesse parâmetro para extrair uma versão de texto simples do template
        get_text_from_html: true
    },
 
    stringifyParams: function () {
        for (var key in self._params) {
            if (self._params.hasOwnProperty(key))
                if (utils.toType(self._params[key]) != "string")
                    self._params[key] = JSON.stringify(self._params[key]);
        }
    },
    getUrl: function() {
        self.stringifyParams();
        var signedReq = new signature.Request('post', '/api/send_mail/template/', self._params);
        var token = new signature.Token(self._auth_key, self._auth_secret);
        token.sign(signedReq);
        var authDict = signedReq.getAuthDict();
        return self._urlBase + '/api/send_mail/template/?' + querystring.stringify(authDict);
    },
    sendRequest: function () {
        var url = self.getUrl();
        _request({url: url, method: 'POST', json: true, body: self._params},
            function (error, response, body) {
                if (response && response.statusCode == 200)
                    console.info(response);
                else {
                    console.error(error);
                }
            }
        );
    }
};
 
self.sendRequest();