Pular para o conteúdo
Voltar para a home

Enviar

Enviar e-mail

Um POST em /v1/messages com JSON. O corpo precisa de destinatário, assunto e pelo menos um de html ou text.

Dois caminhos para enviar

API RESTvocê está aqui

Para código que você escreve.

Devolve o id da mensagem na hora e aceita idempotência, duas coisas que o SMTP não tem.

Gateway SMTP

Para software que não é seu e só fala SMTP.

Logto, Postfix, msmtp, sendmail, ou o backend de e-mail padrão do Laravel, do Django e do WordPress.

Os dois usam a mesma chave de API, respeitam os mesmos limites do plano e aparecem no mesmo painel, com a mesma linha do tempo de eventos. O que sai por SMTP vem marcado com via=smtp.

O caminho da mensagem

Quatro partes participam de um envio, e cada uma responde por um trecho. Quando uma mensagem não chega, a primeira pergunta é em qual faixa ela parou: o que você controla, o que nós controlamos, e o que nenhum dos dois controla.

Quem responde por cada trecho

Você

Até a chamada sair do seu servidor.

  1. Publica o DNS

    Os registros que provam o domínio e assinam a mensagem. Sem eles, o envio é recusado.

  2. Monta a chamada

    Destinatário, assunto e html ou text.

  3. Guarda a chave

    Ela aparece uma vez. Perdida, cria-se outra.

JetSend

Da chamada até a AWS aceitar, e o registro do que voltar.

  1. Valida e aceita

    Confere a chave, o domínio e a lista de bloqueio. Devolve um id.

  2. Entrega à AWS

    Na região de São Paulo, com a reputação isolada por conta.

  3. Registra o desfecho

    Entregue, devolvida ou reclamada, no painel e no seu webhook.

AWS SES

Do aceite até o servidor do destinatário responder.

  1. Faz a entrega

    Conversa com o servidor do outro lado e aguarda a resposta dele.

  2. Devolve o evento

    Aceite, devolução ou reclamação, que é o que vira o seu registro.

Destinatário

Fora do alcance de todos os anteriores.

  1. Aceita ou recusa

    Caixa cheia, endereço inexistente e regra de spam própria decidem aqui.

  2. Marca como spam

    Vira reclamação, e é o evento mais caro para a reputação do seu domínio.

O caminho acima termina no destinatário. O que acontece depois, e como você fica sabendo, está em Webhooks e eventos.

Exemplo completo

shell
curl -X POST https://api.jetsend.com.br/v1/messages \  -H "Authorization: Bearer $JETSEND_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "from": "faturas@suaempresa.com.br",    "fromName": "Sua Empresa",    "to": "cliente@exemplo.com",    "replyTo": "financeiro@suaempresa.com.br",    "subject": "Sua fatura de setembro",    "html": "<p>Segue a fatura.</p>",    "text": "Segue a fatura."  }'

Campos

CampoTipoObservação
tostringObrigatório. Um endereço.
subjectstringObrigatório, até 998 caracteres.
html / textstringPelo menos um dos dois. Pode mandar os dois.
fromstringPrecisa pertencer a um domínio verificado seu. Sem ele, usamos o remetente padrão da conta.
fromNamestringNome de exibição, até 120 caracteres. Não aceita quebra de linha, aspas, barra invertida nem < >.
replyTostringPara onde vai a resposta, se for diferente do remetente.
cc / bccarrayAté 50 endereços em cada.
headersobjetoCabeçalhos seus. Os reservados são recusados, ver abaixo.
idempotencyKeystringAté 255 caracteres. Ver abaixo.
enableTrackingbooleanLigado por padrão. false desliga abertura e clique nesta mensagem.

Cabeçalhos reservados

headers não aceita From, Sender, Reply-To, To, Cc, Bcc, Subject, Date, Message-ID, Return-Path, DKIM-Signature nem Received. Cada um deles tem campo próprio, ou é assinatura que o provedor precisa controlar. A rota recusa em vez de ignorar em silêncio: cabeçalho aceito e descartado é pior, porque o envio parece ter funcionado.

Não mandar duas vezes

Se a sua chamada cair na rede depois que a API já aceitou, repetir a requisição manda o e-mail de novo. O campo idempotencyKey resolve: com a mesma chave, a segunda chamada devolve a mesma mensagem em vez de criar outra.

json
{  "to": "cliente@exemplo.com",  "subject": "Pagamento confirmado",  "html": "<p>Recebemos seu pagamento.</p>",  "idempotencyKey": "pagamento-8421"}

Use um identificador do seu domínio de negócio, como o id do pedido ou do pagamento, e não um valor aleatório novo a cada tentativa.

Listar o que saiu

shell
curl "https://api.jetsend.com.br/v1/messages?limit=20" \  -H "Authorization: Bearer $JETSEND_API_KEY"

Devolve as mensagens da conta, da mais recente para a mais antiga, com id, destinatário, assunto e status.

Erros

CódigoO que houve
400Corpo inválido. A resposta diz qual campo e por quê.
401Chave ausente, malformada ou revogada.
402Cota do plano estourada, ou assinatura em aberto.
403Papel sem permissão de envio, ou chave de envio chamando outra rota.
413html ou text acima do teto de bytes.
422O from não pertence a um domínio verificado seu.

Para exercitar o seu tratamento de devolução e de reclamação sem sujar a sua reputação, use os apelidos de teste.