- Centro de Aprendizagem
- Mitte Pro
- Documentação da API
- Rest API
- Email com texto simples
Em python
# -*- coding: utf-8 -*-
import hmac
import time
import hashlib
import requests
import json
from ordereddict import OrderedDict
timestamp = int(time.time())
auth_key = 'xxxxxxxxxxxxxxxxxx' # Chave pública
secret = 'xxxxxxxxxxxxxxxxxxxx' # 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 <teste@teste.com.br>", "<destinatario2@exemplo.com>"
],
# O endereço de email do remetente segue a mesma regra que os emails dos destinatários
u'from': 'Remetente <teste@teste.com.br>',
u'subject': u'Apenas um teste',
u'message_text': u'Apenas um teste'
}
def encode_param_without_escaping(key, value):
if isinstance(value, list):
return '&'.join([key + '[]=' + item for item in value])
else:
if isinstance(value, dict):
value = json.dumps(value)
return "{key}={value}".format(key=key, value=value)
# 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(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/\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://www.mitte.pro', '/api/send_mail/', auth_key, timestamp, auth_signature_post_text
)
response = requests.post(url_post_text, {}, params_dict)
print ""
print url_post_text
print response.content
Em NodeJS
const _request = require('request');
const signature = require('apysignature');
const querystring = require("querystring");
const self = {
_urlBase: 'http://www.mitte.pro',
_host: 'localhost',
_auth_key: 'xxxxxxxxxxxxxxxxxxxxxxx',
_auth_secret: 'xxxxxxxxxxxxxxxxxxxx',
_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>"
],
// O endereço de email do remetente segue a mesma regra que os emails dos destinatários
from: 'Remetente <paulo.dsn.cir@alterdata.com.br>',
subject: "Apenas um teste",
message_text: "Apenas um teste"
},
toType: function (obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
},
stringifyParams: function () {
for (var key in self._params) {
if (self._params.hasOwnProperty(key))
if (self.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/', 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/?' + 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();