>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Decodificar E-mail em Formato MIME

A maioria dos e-mails enviados hoje usa formato MIME (Extensões de Correio Internet Multipropósito). Isso permite enviar e-mails com versões texto simples e rich text/HTML, imagens embutidas e anexos. Extensões MIME podem ser adicionadas a mensagem em formato RFC/822 padrão para compatibilidade retroativa com sistemas de e-mail antigos.

Passo 1

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

Passo 2

Verifique o cabeçalho "Content-Type". Se o tipo de conteúdo é multipart (ex: "multipart/mixed", "multipart/alternative", etc), a mensagem terá múltiplas seções para analisar. Se for multipart, continue com os passos abaixo.

Passo 3

O cabeçalho Content-Type deve conter string única usada pelo código que gerou a mensagem MIME para designar limites das partes MIME. Exemplo:

Content-Type: multipart/mixed; boundary="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 traços ("--") em linha em branco. Precisa escanear a mensagem linha a linha procurando os limites das partes. Todo texto entre os limites exceto o CR/LF final faz parte daquela parte MIME.

Importante: A última parte MIME terminará com a string de limite seguida por dois traços a mais.

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--

Passo 5

Cada parte MIME então precisa ser analisada. O formato de cada parte é similar à mensagem original formatada RFC/822. Conterá série de cabeçalhos, seguidos por linha em branco, depois dados do corpo.

Passo 6

Uma parte MIME pode ser multipart, com seu próprio cabeçalho "Content-Type" e string de limite. Seu código deve analisar recursivamente partes MIME até atingir nós filhos.

Passo 7

Uma parte MIME pode ser simplesmente anexo binário. Neste caso, cabeçalho Filename geralmente será fornecido, junto com codificação de transferência. BASE64 é tipo popular. Neste caso, todo corpo da parte MIME deve ser decodificado BASE64. Exemplo das primeiras linhas de imagem JPG anexada:

------=NextPart_003_01C755EF.43F2628D Content-Type: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filename="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQABQQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

Passo 8

O corpo HTML da mensagem deve estar em seção MIME com ContentType: Text/Html, dentro de seção ContentType: Multipart/Alternative.

Passo 9

O corpo texto simples da mensagem deve estar em seção MIME com ContentType: Text/plain, dentro de seção ContentType: Multipart/Alternative.

Dica

Consulte RFC 822 https://www.ietf.org/rfc/rfc0822.txt?number=822 e RFC 1341 https://www.ietf.org/rfc/rfc1341.txt?number=1341 para mais informações. Se programa em C#, excelente biblioteca gratuita em https://www.codeproject.com/csharp/mime_project.asp.