A maioria dos e-mails enviados hoje são formatados em MIME (Multipupose Internet Mail Extensions). Isso permite que os e-mails sejam enviados com texto simples e versões rich text/HTML, imagens embutidas e anexos. Extensões MIME podem ser adicionadas a uma mensagem no formato RFC/822 padrão para que a compatibilidade com versões anteriores seja alcançada com sistemas de correio mais antigos.
Etapa 1
Carregue o conteúdo da mensagem de e-mail.
Etapa 2
Verifique o cabeçalho "Content-Type". Se o tipo de conteúdo for multipart (ou seja, "multipart/mixed", "multipart/alternative", etc), a mensagem terá várias seções para analisar. Se o tipo de conteúdo for multipartes, continue com as etapas abaixo.
Etapa 3
O cabeçalho Content-Type deve conter uma string exclusiva usada pelo código que gerou a mensagem MIME para designar os limites da parte MIME. Exemplo:
Tipo de conteúdo:multipart/mixed; limite="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
A string de limite neste caso é "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
Etapa 4
Cada parte MIME será separada pela string de limite precedida por dois traços ("--") em uma linha em branco. Você precisará escanear a mensagem linha por linha procurando os limites da peça. Todo o texto entre os limites
exceto o CR/LF final faz parte dessa parte MIME.
Importante:A última parte MIME terminará com a string de limite seguida por mais dois traços.
Exemplo:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Primeira parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Segunda parte MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Última parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Etapa 5
Cada parte MIME precisa ser analisada. O formato de cada parte MIME é semelhante à mensagem formatada RFC/822 original. Ele conterá uma série de cabeçalhos, seguidos por uma linha em branco e, em seguida, os dados do corpo.
Etapa 6
Uma parte MIME pode ser multiparte, com seu próprio cabeçalho "Content-Type" e string de limite. Seu código deve analisar recursivamente as partes MIME até atingir os nós filhos.
Etapa 7
Uma parte MIME pode ser simplesmente um anexo binário. Nesse caso, um cabeçalho de nome de arquivo geralmente será fornecido, juntamente com a codificação de transferência. BASE64 é um tipo de codificação popular. Neste caso, todo o corpo da parte MIME deve ser decodificado em BASE64. Como exemplo, aqui estão as primeiras linhas de uma imagem JPG anexada:
------
= NextPart_003_01C755EF.43F2628D Tipo de conteúdo:imagem/jpeg; name="testimage.jpg" Content-Transfer-Encoding:base64 Content-Description:testimage.jpg Conteúdo-Disposition:attachment; nomedoarquivo="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQABQQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
Etapa 8
O corpo HTML da mensagem deve estar em uma seção MIME com ContentType:Text/Html, dentro de uma seção ContentType:Multipart/Alternative MIME.
Etapa 9
O corpo de texto simples da mensagem deve estar em uma seção MIME com ContentType:Text/plain, dentro de uma seção ContentType:Multipart/Alternative MIME.
Dica
Consulte RFC 822 http://www.ietf.org/rfc/rfc0822.txt?number=822 e RFC 1341 http://www.ietf.org/rfc/rfc1341.txt?number=1341 para obter mais informações. Se você estiver codificando em C#, uma excelente biblioteca gratuita está disponível em http://www.codeproject.com/csharp/mime_project.asp.