Envie anexos de e-mail por SMTP estruturando sua mensagem no formato Multipurpose Internet Mail Extensions (MIME).
O envio de anexos via SMTP exige que o corpo do e-mail siga o formato MIME. O MIME define como empacotar várias partes de conteúdo — texto, imagens e arquivos — em uma única mensagem de e-mail compatível com qualquer cliente de e-mail padrão.
Conceitos básicos do MIME
O MIME é um padrão da Internet que estende o formato das mensagens de e-mail.
Para mais informações, consulte a RFC 2045.
Codificação de anexos
Os protocolos de e-mail transmitem texto, não dados binários. Para transportar arquivos binários, o MIME usa a codificação Base64 para converter bytes brutos em uma representação ASCII segura. Esse processo aumenta o tamanho original do arquivo em aproximadamente 33–37%. Assim, um arquivo de 10 MB passa a ocupar cerca de 13–14 MB após a codificação.
Uma mensagem MIME com anexos usa multipart/mixed como tipo de conteúdo de nível superior. Cada parte é separada por uma string boundary exclusiva e possui seus próprios cabeçalhos. A parte referente ao anexo deve incluir:
|
Cabeçalho |
Descrição |
Exemplo |
|
|
Tipo MIME e nome do arquivo |
|
|
|
Defina como |
|
|
|
Configure como |
|
O exemplo a seguir mostra uma mensagem MIME completa e mínima com um anexo:
From: sender@example.com
To: recipient@example.com
Subject: Monthly report
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="boundary123"
--boundary123
Content-Type: text/plain; charset="UTF-8"
Please find this month's report attached.
--boundary123
Content-Type: application/pdf; name="report.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report.pdf"
JVBERi0xLjQKJ...
--boundary123--
Se essa estrutura estiver malformada — por exemplo, com um boundary ausente ou cabeçalho incorreto — os clientes de e-mail poderão exibir arquivos corrompidos ou descartar os anexos silenciosamente.
O tamanho total de um e-mail com anexos não pode exceder 15 MB. Um e-mail pode conter no máximo 100 anexos.
O limite de 15 MB aplica-se ao tamanho total do e-mail enviado, incluindo cabeçalho, corpo da mensagem e anexos. Como a codificação Base64 aumenta o tamanho dos arquivos, o e-mail final pode ter mais de 1,5 vezes o tamanho dos anexos originais. Portanto, mantenha o tamanho total dos arquivos de anexo originais em até 8 MB. Para enviar arquivos maiores, adicione hiperlinks correspondentes no corpo do e-mail.
Exemplos de código
As páginas a seguir apresentam exemplos funcionais de código SMTP em diversas linguagens. Cada exemplo constrói uma mensagem MIME multipart/mixed e a envia via SMTP.
Para obter códigos de exemplo, consulte:
Exemplo de chamada SMTP para Java
Exemplo de chamada SMTP para Python 3.6 ou posterior
Exemplo de chamada SMTP para C#