Documentação Email API
Criação de API key
A criação de API key está disponível no link: https://app.emailmassivo.com/api.
Você pode ler informações detalhadas sobre a criação de API key em nossa Base de conhecimento.
Rota de envio de e-mail (com HTML pronto)
POST https://api.emailmassivo.com/api/v1/external-mails/sendNo cabeçalho «X-Api-Key» é necessário passar como string a chave API para autenticação.
Exemplo de corpo de solicitação
{
"idempotencyKey": "unique-key-string",
"mail": {
"to": {
"email": "user@example.com",
"name": "string"
},
"from": {
"email": "user@example.com",
"name": "string"
},
"subject": "string",
"previewTitle": "string",
"headers": {
},
"cc": "string",
"bcc": "string",
"html": "string",
"text": "string"
}
}Descrição de campos
- subject* (assunto) — contém o assunto ou título do e-mail;
- previewTitle — preheader do e-mail, até 255 caracteres;
- html*, text — se passarem tanto a versão de texto quanto a versão HTML simultaneamente, o cliente de e-mail do destinatário decidirá qual versão exibir ao usuário dependendo de suas configurações e capacidades. Geralmente, os clientes de e-mail exibem em formato HTML se suportam essa função. Nosso serviço gera automaticamente text similar a html se text não for passado (ou for passada uma string vazia);
- name (to/from) — nome do destinatário/remetente do e-mail;
- headers — cabeçalhos do sistema do e-mail (campo opcional, para usuários experientes). https://nodemailer.com/message/custom-headers;
- cc e bcc — é o endereço do destinatário de cópia e o endereço do destinatário de cópia oculta;
- cc (Carbon Copy) — é o campo «cópia» ou «enviar cópia». O destinatário especificado em CC receberá uma cópia da mensagem, mas todos os destinatários poderão ver para quem mais foram enviadas cópias da mensagem;
- bcc (Blind Carbon Copy) — é o campo «cópia oculta». Isso pode ser útil se você deseja enviar uma cópia da mensagem para alguém sem revelar seu endereço a outros destinatários.
Se destinatários forem especificados em cc ou bcc, na resposta estará presente um campo adicional — additionalRecipients. Ele contém informações sobre cada um desses destinatários.
- attachments — anexo no e-mail (arquivo), em formato de matriz de arquivos com estrutura do tipo:
{ "nome_arquivo.extensão": "corpo do arquivo codificado em base64"};
- idempotencyKey (String) — chave de idempotência do usuário para prevenir a duplicação de solicitações.
Envio usando chave de idempotência
Se dentro de uma hora chegar uma solicitação repetida para enviar um e-mail com parâmetros completamente coincidentes:
- From (remetente);
- To (destinatário);
- Body (corpo do e-mail);
- Subject (título);
- Attachments (anexos).
Então:
- sem chave de idempotência a API responde com o código 200 e retorna o mesmo
uuiddo e-mail que na primeira solicitação, o reenvio não cria um novo e-mail; - com chave de idempotência (
idempotencyKey, é passada fora do blocomail) os e-mails são considerados diferentes quando os valores da chave diferem e serão enviados novamente.
Recomendações de uso
Recomendamos enfaticamente passar sempre sua idempotencyKey única.
O uso da chave de idempotência do usuário é considerado necessário para um gerenciamento confiável de solicitações repetidas.
O mecanismo de detecção automática de repetições sem chave existe apenas para compatibilidade retroativa e proteção básica contra duplicação, mas não garante a ausência de envios omitidos ou adicionais.
Notas
- O serviço limita a frequência de solicitações: são permitidas não mais de 10 solicitações por segundo de um endereço IP.
- Não é possível especificar a codificação, sempre é usado UTF-8;
- A solicitação aceita quaisquer cabeçalhos do sistema, mas os que estabelecemos têm prioridade, a saber: Return-Path, List-Unsubscribe, Errors-To, X-Complaints-To, Precedence, Feedback-ID, X-SenderName-MailID, X-Mailru-Msgtype, X-Postmaster-Msgtype.
Possíveis respostas
| Status | Descrição |
|---|---|
200 OK |
O email foi aceito para processamento |
400 Bad Request |
Erro de validação da solicitação |
401 Unauthorized |
Chave API inválida |
402 Payment Required |
Não há recursos suficientes no saldo do usuário |
403 Forbidden |
A chave API não está ativa |
404 Not Found |
Um recurso necessário não foi encontrado |
422 Unprocessable Entity |
O destinatário não está disponível |
500 Internal Server Error |
Erro interno do servidor |
503 Service Unavailable |
O serviço de processamento de emails está temporariamente indisponível |
200 OK
O email foi aceito para processamento.
Campos da resposta:
| Campo | Tipo | Descrição |
|---|---|---|
uuid |
string |
UUID do email enviado |
additionalRecipients |
array |
Resultados para destinatários adicionais de cc e bcc. Cada item contém uuid para um destinatário aceito com sucesso ou error para um endereço de email inválido |
warning |
string |
Retornado se idempotencyKey não foi enviado |
400 Bad Request
Mensagens possíveis:
| Mensagem | Descrição |
|---|---|
Attachments parse failed |
Não foi possível processar os anexos |
Attachments size more than allowed |
O tamanho total dos anexos excede o limite permitido |
Attachments type forbidden |
O tipo de arquivo anexado não é permitido |
HTML template is not valid |
O template HTML não é válido para /send-by-template |
404 Not Found
Mensagens possíveis:
| Mensagem | Descrição |
|---|---|
ExternalMailApiKey not found |
A chave API não foi encontrada |
User Domain not found |
O domínio do remetente não foi encontrado ou não está vinculado ao usuário |
TemplateMailUser not found by id |
O template de email não foi encontrado para /send-by-template |
MailUuid not found |
O UUID do email não foi encontrado |
422 Unprocessable Entity
Mensagens possíveis:
| Mensagem | Descrição |
|---|---|
Email receiver unsubscribed from this API key mails |
O destinatário cancelou a inscrição dos emails enviados com esta chave API |
Email receiver complained from this API key mails |
O destinatário reclamou dos emails enviados com esta chave API |
Email receiver doesn't exist |
O email do destinatário não existe |
Email receiver unavailable |
O email do destinatário está temporariamente indisponível |
Template not found by templateId |
O template não foi encontrado para /send-by-template |
Rota de envio de e-mail com template
POST https://api.emailmassivo.com/api/v1/external-mails/send-by-templateNo cabeçalho «X-Api-Key» é necessário passar como string a chave API para autenticação.
Exemplo de corpo de solicitação
{
"idempotencyKey": "unique-key-string",
"mail": {
"to": {
"email": "user@example.com",
"name": "string"
},
"from": {
"email": "user@example.com",
"name": "string"
},
"subject": "string",
"previewTitle": "string",
"idTemplateMailUser": number,
"params": {
"test": "string",
"test1": "string",
"test2": "string"
}
}
}Descrição de campos
- idTemplateMailUser* — identificador do template de e-mail criado no EmailMassivo;
- params — objeto com variáveis para substituir no template. As chaves do objeto devem corresponder às variáveis utilizadas no template.
Exemplos de uso de API com template de e-mail EmailMassivo
PHP
$url = 'https://api.emailmassivo.com/api/v1/external-mails/send-by-template';
$data = array(
'idempotencyKey' => 'unique-key-string',
'mail' => array(
'to' => array(
'email' => 'user@example.com',
'name' => 'string'
),
'from' => array(
'email' => 'user@example.com',
'name' => 'string'
),
'subject' => 'string',
'previewTitle' => 'string',
'idTemplateMailUser' => number,
'params' => array(
'test' => 'string',
'test1' => 'string',
'test2' => 'string'
)
)
);
$headers = array(
'Content-Type' => 'application/json',
'X-Api-Key' => 'YOUR_API_KEY'
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);Python
import requests
import json
url = 'https://api.emailmassivo.com/api/v1/external-mails/send-by-template'
data = {
'idempotencyKey': 'unique-key-string',
'mail': {
'to': {
'email': 'user@example.com',
'name': 'string'
},
'from': {
'email': 'user@example.com',
'name': 'string'
},
'subject': 'string',
'previewTitle': 'string',
'idTemplateMailUser': number,
'params': {
'test': 'string',
'test1': 'string',
'test2': 'string'
}
}
}
headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.post(url, json=data, headers=headers)Node.js
const axios = require('axios');
const url = 'https://api.emailmassivo.com/api/v1/external-mails/send-by-template';
const data = {
idempotencyKey: 'unique-key-string',
mail: {
to: {
email: 'user@example.com',
name: 'string'
},
from: {
email: 'user@example.com',
name: 'string'
},
subject: 'string',
previewTitle: 'string',
idTemplateMailUser: number,
params: {
test: 'string',
test1: 'string',
test2: 'string'
}
}
};
const headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY'
};
axios.post(url, data, { headers })
.then(response => {
// Processamento de resposta API
})
.catch(error => {
// Processamento de erro
});JavaScript
const url = 'https://api.emailmassivo.com/api/v1/external-mails/send-by-template';
const data = {
idempotencyKey: 'unique-key-string',
mail: {
to: {
email: 'user@example.com',
name: 'string'
},
from: {
email: 'user@example.com',
name: 'string'
},
subject: 'string',
previewTitle: 'string',
idTemplateMailUser: number,
params: {
test: 'string',
test1: 'string',
test2: 'string'
}
}
};
const headers = {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY'
};
fetch(url, {
method: 'POST',
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
// Processamento de resposta API
})
.catch(error => {
// Processamento de erro
});Se a solicitação retornar um erro: «Chave API incorreta», substitua o código de transmissão de API key por:$headers = array( 'Content-Type: application/json', 'X-Api-Key: YOUR_API_KEY');