- Centro de Aprendizagem
- Mitte Pro
- Documentação da API
- Rest API
- Email com template
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();