Como decodificar um e-mail em 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 versões em texto simples e rich text / HTML, imagens embutidas e anexos. As 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.

Passo 1

Carregue o conteúdo da mensagem de e-mail.

Vídeo do dia

Passo 2

Verifique o cabeçalho "Content-Type". Se o tipo de conteúdo for multiparte (ou seja, "multiparte / misto", "multiparte / alternativa" etc.), a mensagem terá várias seções para analisar. Se o tipo de conteúdo for multiparte, 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 / misto; limite = "part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

A string de limite neste caso é "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Passo 4

Cada parte MIME será separada pela string de limite precedida por dois travessões ("-") em uma linha em branco. Você precisará examinar a mensagem linha por linha, procurando os limites das peças. Todo o texto entre os limites exceto o CR / LF final faz parte dessa parte MIME.

Importante: a última parte do MIME terminará com a string de limite seguida por mais dois travessões.

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 original formatada em RFC / 822. Ele conterá uma série de cabeçalhos, seguidos por uma linha em branco e 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, junto com a codificação de transferência. BASE64 é um tipo de codificação popular. Nesse 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" Codificação de transferência de conteúdo: base64 Descrição do conteúdo: testimage.jpg Disposição de conteúdo: anexo; filename = "testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIjyMjIyMjIyMjIjIjMjIyMjIyMjIjIjMjIyMjIyMjIjMjMjIyMjIyMjIjAjMjIyMjIyM 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 do texto simples da mensagem deve estar em uma seção MIME com ContentType: Text / plain, dentro de uma seção ContentType: Multipart / Alternative MIME.

Coisas que você precisa

  • Conhecimento de uma linguagem de computador (ou seja, C ++, C #, VB, etc).

  • Conhecimento básico do formato de uma mensagem de e-mail formatada em RFC / 822.

Dica

Consulte RFC 822 http://www.ietf.org/rfc/rfc0822.txt? numero = 822 e RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? número = 1341 Para maiores informações. Se você estiver codificando em C #, uma excelente biblioteca gratuita está disponível em http://www.codeproject.com/csharp/mime_project.asp.