Sådan afkodes en e-mail i MIME-format

De fleste e-mails, der sendes i dag, er MIME-formaterede (Multipupose Internet Mail Extensions). Dette gør det muligt at sende e-mails med almindelig tekst og rich text/HTML-versioner, inline-billeder og vedhæftede filer. MIME-udvidelser kan tilføjes til en besked i standard RFC/822-format, så der opnås bagudkompatibilitet med ældre mailsystemer.

Trin 1

Indlæs indholdet af e-mail-beskeden.

Dagens video

Trin 2

Tjek "Content-Type" overskriften. Hvis indholdstypen er flerdelt (dvs. "flerdelt/blandet", "flerdelt/alternativt" osv.), vil meddelelsen have flere sektioner at parse. Hvis indholdstypen er flerdelt, skal du fortsætte med nedenstående trin.

Trin 3

Content-Type-headeren skal indeholde en unik streng, der bruges af koden, der genererede MIME-meddelelsen til at udpege MIME-delgrænser. Eksempel:

Indholdstype: multipart/blandet; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

Grænsestrengen i dette tilfælde er "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Trin 4

Hver MIME-del vil blive adskilt af grænsestrengen efterfulgt af to bindestreger ("--") på en tom linje. Du bliver nødt til at scanne beskeden linje for linje og lede efter delens grænser. Al tekst mellem grænserne

undtagen den endelige CR/LF er en del af den MIME-del.

Vigtigt: Den sidste MIME-del ender med grænsestrengen efterfulgt af yderligere to bindestreger.

Eksempel:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Første MIME-del.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Anden MIME-del

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Sidste MIME-del.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

Trin 5

Hver MIME-del skal derefter parses. Formatet på hver MIME-del svarer til den originale RFC/822-formaterede besked. Det vil indeholde en række overskrifter, efterfulgt af en tom linje, derefter brødtekstdata.

Trin 6

En MIME-del kan selv være flerdelt med sin egen "Content-Type" header og grænsestreng. Din kode skal parse MIME-dele rekursivt, indtil den når de underordnede noder.

Trin 7

En MIME-del kan simpelthen være en binær vedhæftet fil. I dette tilfælde vil en filnavn-header normalt blive leveret sammen med overførselskodningen. BASE64 er en populær kodningstype. I dette tilfælde skal hele MIME-delens krop være BASE64-afkodet. Som et eksempel her er de første par linjer af et vedhæftet JPG-billede:

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

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

Trin 8

HTML-teksten i meddelelsen skal være i en MIME-sektion med ContentType: Text/Html, inde i en ContentType: Multipart/Alternative MIME-sektion.

Trin 9

Teksten i klartekst af meddelelsen skal være i en MIME-sektion med ContentType: Text/plain, inde i en ContentType: Multipart/Alternative MIME-sektion.

Ting du skal bruge

  • Kendskab til et computersprog (dvs. C++, C#, VB osv.).

  • Grundlæggende viden om formatet af en RFC/822-formateret e-mail-meddelelse.

Tip

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 mere information. Hvis du koder i C#, er et fremragende gratis bibliotek tilgængeligt på http://www.codeproject.com/csharp/mime_project.asp.