C C-Connect Documentação

Enviar MIME em bruto

Quando enviar a mensagem já construída, e as quatro coisas que reescrevemos.

Se já tens um sistema que constrói mensagens, com anexos, imagens embebidas e cabeçalhos teus, podes enviá-las inteiras. O campo chama-se raw.

curl -X POST https://app.c-connect.pt/v1/messages \
  -H "Authorization: Bearer $CCONNECT_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<'JSON'
{
  "from": "recibos@mail.empresa.pt",
  "to": "alguem@example.org",
  "raw": "From: Recibos <recibos@mail.empresa.pt>\r\nSubject: O teu recibo\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nObrigado."
}
JSON

Quando o raw está presente, nada mais é renderizado: o subject, o text e o html são ignorados, e o que chega é o que sai.

O que reescrevemos

Quatro coisas, e mais nenhuma. O corpo nunca é lido.

  1. As quebras de linha passam a CRLF. Uma mensagem construída com \n teria o hash do corpo calculado sobre bytes que nenhum destino chega a ver, e falharia DKIM em toda a parte.
  2. O Message-ID é substituído pelo nosso. É o mesmo identificador que a API te devolve, o mesmo que aparece nos eventos, e o mesmo que vai no envelope de devolução: é o que liga uma devolução à mensagem sem ter de a abrir.
  3. O Date é reescrito no fuso da tua conta. Um Date no futuro ou muito no passado é um sinal que alguns filtros usam.
  4. A assinatura DKIM é acrescentada, sobre os cabeçalhos e o corpo tal como ficaram.

Tudo o resto fica byte a byte. Não há aqui um analisador de MIME que reconstrua a mensagem, precisamente porque reconstruir perderia o que tu fizeste e nós não modelamos.

O que é recusado

Situação Porquê
Falta a linha em branco depois dos cabeçalhos Não é uma mensagem MIME.
Um cabeçalho sem : Idem.
Não há From Não sabemos por quem assinar.
O From é de outro domínio Só podes enviar a partir de um domínio teu verificado.
Marketing sem List-Unsubscribe Ver Cancelamento de subscrição.

O List-Unsubscribe é recusado em vez de acrescentado porque acrescentá-lo significaria inventar um URL de cancelamento em teu nome, e um cancelamento num clique que não cancela nada é pior do que não existir.

Os cabeçalhos que não deves pôr

Não escrevas DKIM-Signature, Return-Path ou Received. Os dois primeiros são nossos, e o terceiro é escrito pelos servidores por onde a mensagem passa.

Podes pôr o Reply-To, o References, o In-Reply-To e os cabeçalhos teus com prefixo X-. Um In-Reply-To correcto é o que faz os clientes de email agruparem uma conversa, e vale a pena se enviares respostas automáticas.

Tamanho

O limite do campo raw é de 25 MB, que é o mesmo limite prático de quase todos os destinos. Uma mensagem maior do que isso não é recusada por nós e é recusada por eles, o que é pior, porque já gastou a tentativa.

Para ficheiros grandes, envia uma ligação em vez de um anexo. Também é o que evita que a mensagem seja recusada por tamanho num servidor intermédio que nem sequer é o destino final.