Protocolo de Extensões de Mensagens da Internet
Multipurpose Internet Mail Extensions (MIME) é um padrão da Internet que amplia o formato de e‑mail para suportar:
- texto em conjuntos de caracteres diferentes de US‑ASCII;
- anexos não‑textuais;
- corpos de mensagem multipartes; e
- informação de cabeçalho em conjuntos de caracteres não‑ASCII.
O SMTP suporta apenas caracteres ASCII de 7 bits, o que efetivamente significa que ele suporta apenas um pequeno número de idiomas. Idiomas baseados no alfabeto latino funcionam bem no SMTP; outros idiomas não são exibidos corretamente quando o e‑mail é entregue. O MIME, porém, amplia o suporte de caracteres ASCII do SMTP para que e‑mails usando outros conjuntos de caracteres, imagens e sons possam ser enviados e exibidos. Geralmente, todos os clientes de e‑mail e servidores SMTP mapeiam corretamente mensagens no formato MIME.
Entendendo cabeçalhos MIME
Os cabeçalhos MIME contêm informações sobre o protocolo.
MIME-Version
Isso indica que a mensagem está formatada como MIME. Aparece como:
MIME-Version: 1.0
Content-Type
Isso indica o tipo de conteúdo da mensagem, dado como um par de tipo e subtipo: text/plain, text/html, por exemplo. O tipo de conteúdo multipart pode conter texto, HTML, anexos, imagens, áudio, vídeo etc.
Content-Type: multipart
Content-Transfer-Encoding
Indica se um esquema de codificação binário‑para‑texto é usado sobre o especificado pelo content-type. Se houver, indica qual. Podemos especificar aqui codificação 7‑bit, 8‑bit ou binária.
Encoded-Word
Os cabeçalhos de mensagens SMTP normalmente usam caracteres ASCII. Caracteres não‑ASCII devem usar a sintaxe de palavra codificada MIME em vez de uma string literal. O formato é:
"=? charset ? encoding ? texto codificado ?=".
Mensagens multipart
Uma mensagem MIME multipart contém um delimitador no cabeçalho content-type. Esse delimitador, que não deve ocorrer em nenhuma das partes, é colocado entre as partes, e no início e no fim do corpo da mensagem, da seguinte forma:
MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Cada parte consiste em seu próprio cabeçalho de conteúdo e um corpo.
Subtipos multipart
O padrão MIME define vários subtipos de mensagens multipartes. O subtipo é especificado no cabeçalho "Content-Type" da mensagem completa.
A seguir está uma lista dos subtipos mais usados.
- Mixed: Multipart/mixed é usado para enviar arquivos com diferentes cabeçalhos "Content-Type" embutidos. Ao enviar imagens ou outros arquivos facilmente legíveis, a maioria dos clientes de e‑mail os exibirá embutidos.
- Message: Uma parte de mensagem contém um e‑mail.
- Digest: digest é uma forma simples de enviar múltiplas mensagens de texto. O tipo de conteúdo padrão para cada parte é "message/rfc822".
- Alternative: O subtipo alternative indica que cada parte é uma versão "alternativa" do mesmo (ou similar) conteúdo, cada uma em um formato diferente indicado pelo cabeçalho "Content-Type".
Mais comumente multipart/alternative é usado para e‑mail com duas partes, uma em texto simples (text/plain) e outra em HTML (text/html). A parte de texto simples fornece compatibilidade retroativa enquanto a parte HTML permite o uso de formatação e hiperlinks. A maioria dos clientes de e‑mail oferece uma opção ao usuário para preferir texto simples ao invés de HTML; este é um exemplo de como fatores locais podem influenciar a escolha da aplicação sobre qual "melhor" parte da mensagem exibir.