>> Tecnologia eletrônica >  >> Lar inteligente >> Vida Inteligente

Como decodificar um e-mail no formato MIME


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.