Pular para o conteúdo
Docs

Guia prático

Anexe arquivos aos e-mails da API como conteúdo em base64 ou a partir de uma URL, incorpore imagens inline com Content-ID e respeite os tipos de arquivo permitidos e os limites de tamanho.

Atualizado em 1 de out. de 2026

Esta página mostra como anexar arquivos aos e-mails que você envia com POST /emails, como conteúdo codificado em base64 ou deixando o Emailit baixá-los de uma URL. Ela também trata de imagens inline, tipos de arquivo permitidos e limites de tamanho.

Campos do anexo

Passe um array attachments. Cada item é um objeto com estes campos:

filenamestringobrigatório
Nome do arquivo mostrado ao destinatário. Deve terminar com uma extensão permitida.
contentstring
O arquivo codificado em base64. Use content ou url, não os dois.
urlstring
Uma URL http:// ou https:// de onde o Emailit baixa o arquivo. Use content ou url, não os dois.
content_typestring
O tipo MIME, como application/pdf. Obrigatório com content. Com url, o padrão é o Content-Type que o servidor retorna.
content_idstring
Um Content-ID. Defini-lo torna o anexo inline, para que o seu HTML possa exibi-lo com cid:.
encodingstringpadrão: base64
Como content está codificado. Deixe como base64, a menos que você tenha um motivo para mudar.

Anexar um arquivo em base64

Leia o arquivo, codifique-o em base64 e envie-o com o tipo MIME dele.

Terminal
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"from\": \"Acme Billing <billing@acme.com>\",
    \"to\": \"ada@example.com\",
    \"subject\": \"Invoice INV-1042\",
    \"text\": \"Your invoice is attached.\",
    \"attachments\": [{
      \"filename\": \"INV-1042.pdf\",
      \"content\": \"$(base64 < INV-1042.pdf | tr -d '\n')\",
      \"content_type\": \"application/pdf\"
    }]
  }"

Anexar um arquivo a partir de uma URL

Em vez de codificar o arquivo você mesmo, informe uma url ao Emailit. O Emailit baixa o arquivo enquanto monta a mensagem, então a requisição demora o mesmo tempo que o download.

JSON
{
  "from": "Acme Billing <billing@acme.com>",
  "to": "ada@example.com",
  "subject": "Invoice INV-1042",
  "text": "Your invoice is attached.",
  "attachments": [
    {
      "filename": "INV-1042.pdf",
      "url": "https://files.acme.com/invoices/INV-1042.pdf"
    }
  ]
}

A URL precisa atender a estas regras, senão a requisição falha com 422 e Attachment error:

  • Ela usa http ou https e aponta para um host público. Endereços privados e internos são recusados.
  • Ela retorna o arquivo diretamente, com um status 2xx. Redirecionamentos não são seguidos.
  • O download termina em até 30 segundos.
  • O arquivo não tem mais de 25 MB, conforme informado pelo cabeçalho Content-Length dele.

O Emailit monta uma cópia separada da mensagem para cada destinatário e baixa os anexos por URL para cada cópia. Garanta que URLs assinadas ou com validade continuem válidas durante toda a requisição e que o servidor dos arquivos aguente um download por destinatário.

Incorporar imagens inline

Para exibir uma imagem dentro do corpo HTML em vez de como um anexo separado, dê a ela um content_id e faça referência a esse ID com cid: em uma tag img.

JSON
{
  "from": "Acme <hello@acme.com>",
  "to": "ada@example.com",
  "subject": "Your weekly report",
  "html": "<p><img src=\"cid:chart-week-40\" alt=\"Weekly signups\" width=\"600\"></p>",
  "attachments": [
    {
      "filename": "chart.png",
      "content": "iVBORw0KGgoAAAANSUhEUgAA...",
      "content_type": "image/png",
      "content_id": "chart-week-40"
    }
  ]
}

O content_id do anexo e o valor depois de cid: devem ser exatamente iguais. Imagens inline deixam a mensagem maior para cada destinatário, então, para logotipos e outras imagens compartilhadas, uma URL de imagem hospedada no HTML costuma ser a melhor escolha.

Limites de tamanho

Limite Valor
Mensagem inteira, depois da codificação 40 MB. Mensagens maiores falham com 413 Message too large.
Um anexo baixado de url 25 MB
Timeout de download para url 30 segundos
Corpo JSON da requisição 50 MB

A codificação base64 deixa os arquivos cerca de um terço maiores, e o limite de 40 MB vale para a mensagem codificada. Na prática, mantenha o tamanho somado dos seus arquivos abaixo de uns 29 MB. Para qualquer coisa maior, envie o arquivo para o seu próprio armazenamento e mande um link.

Tipos de arquivo permitidos

filename deve terminar com uma destas extensões. Qualquer outra extensão, ou um nome sem extensão, falha na validação com 400.

Categoria Extensões
Texto .txt, .csv, .log, .css, .ics, .xml
Imagens .jpg, .jpe, .jpeg, .gif, .png, .bmp, .psd, .tif, .tiff, .svg, .indd, .ai, .eps
Documentos .doc, .docx, .rtf, .odt, .ott, .pdf, .pub, .pages, .mobi, .epub
Áudio .mp3, .m4a, .m4v, .wma, .ogg, .flac, .wav, .aif, .aifc, .aiff
Vídeo .mp4, .mov, .avi, .mkv, .mpeg, .mpg, .wmv
Planilhas .xls, .xlsx, .ods, .numbers
Apresentações .odp, .ppt, .pptx, .pps, .key
Arquivos compactados e contatos .zip, .vcf
E-mail .eml
Assinaturas e criptografia .p7c, .p7m, .p7s, .pgp, .asc, .sig

Arquivos executáveis e scripts não estão na lista e não podem ser anexados.

Ler os anexos de um e-mail enviado

Listar anexos (GET /emails/{id}/attachments) retorna cada anexo com filename, content_type, size, content_id, content_disposition (attachment ou inline) e o content em base64. É preciso uma chave Full Access. Os anexos são excluídos junto com o conteúdo da mensagem quando termina o seu período de retenção de dados.

Solução de problemas

Erro O que verificar
Attachment at index 0 missing content_type (required when using 'content') Adicione content_type a todos os anexos em base64.
Attachment 'report.exe' has unsupported file type '.exe' Use uma extensão permitida ou coloque o arquivo em um .zip.
Attachment at index 0 cannot have both 'content' and 'url' Envie só um dos dois.
Attachment error com Failed to fetch attachment A URL retornou um status de erro, redirecionou, deu timeout ou não é pública. Abra-a a partir de um servidor fora da sua rede para verificar.
Attachment error com Attachment too large (max 25MB) Hospede o arquivo e envie um link no lugar dele.
413 Message too large Reduza o tamanho total dos anexos.

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.