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.