Hvordan dekode en e-post i MIME-format

De fleste e-poster som sendes i dag er MIME-formaterte (Multipupose Internet Mail Extensions). Dette gjør at e-poster kan sendes med ren tekst og rik tekst/HTML-versjoner, innebygde bilder og vedlegg. MIME-utvidelser kan legges til en melding i standard RFC/822-format slik at bakoverkompatibilitet oppnås med eldre e-postsystemer.

Trinn 1

Last inn innholdet i e-postmeldingen.

Dagens video

Steg 2

Sjekk "Content-Type"-overskriften. Hvis innholdstypen er flerdelt (dvs. "flerdelt/blandet", "flerdelt/alternativt" osv.) vil meldingen ha flere deler å analysere. Hvis innholdstypen er flerdelt, fortsett med trinnene nedenfor.

Trinn 3

Content-Type-overskriften skal inneholde en unik streng som brukes av koden som genererte MIME-meldingen for å angi MIME-delgrenser. Eksempel:

Innholdstype: flerdelt/blandet; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

Grensestrengen i dette tilfellet er "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Trinn 4

Hver MIME-del vil bli atskilt med grensestrengen foran med to bindestreker ("--") på en tom linje. Du må skanne meldingen linje for linje og se etter delgrensene. All tekst i mellom grensene

unntatt den siste CR/LF er en del av den MIME-delen.

Viktig: Den siste MIME-delen vil ende med grensestrengen etterfulgt av ytterligere to streker.

Eksempel:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Første MIME-del.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Andre MIME-del

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Siste MIME-del.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

Trinn 5

Hver MIME-del må deretter analyseres. Formatet til hver MIME-del ligner på den originale RFC/822-formaterte meldingen. Den vil inneholde en serie med overskrifter, etterfulgt av en tom linje, deretter brødtekstdataene.

Trinn 6

En MIME-del kan selv være flerdelt, med sin egen "Content-Type"-overskrift og grensestreng. Koden din må parse MIME-deler rekursivt til den når undernodene.

Trinn 7

En MIME-del kan ganske enkelt være et binært vedlegg. I dette tilfellet vil en filnavn-overskrift vanligvis bli levert sammen med overføringskodingen. BASE64 er en populær kodingstype. I dette tilfellet må hele MIME-delen være BASE64-dekodet. Som et eksempel her er de første linjene i et vedlagt JPG-bilde:

=NextPart_003_01C755EF.43F2628D Innholdstype: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filnavn="testbilde.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMIABIMQ AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

Trinn 8

HTML-teksten til meldingen skal være i en MIME-seksjon med ContentType: Text/Html, inne i en ContentType: Multipart/Alternative MIME-seksjon.

Trinn 9

Klartekstteksten til meldingen skal være i en MIME-seksjon med ContentType: Text/plain, inne i en ContentType: Multipart/Alternative MIME-seksjon.

Ting du trenger

  • Kunnskap om et dataspråk (dvs. C++, C#, VB, etc).

  • Grunnleggende kunnskap om formatet til en RFC/822-formatert e-postmelding.

Tips

Se RFC 822 http://www.ietf.org/rfc/rfc0822.txt? nummer=822 og RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? nummer=1341 for mer informasjon. Hvis du koder i C#, er et utmerket gratis bibliotek tilgjengelig på http://www.codeproject.com/csharp/mime_project.asp.