Kako dekodirati e-pošto v obliki MIME
Večina danes poslanih e-poštnih sporočil je v formatu MIME (Multiupose Internet Mail Extensions). To omogoča pošiljanje e-poštnih sporočil z navadnim besedilom in različicami obogatenega besedila/HTML, vstavljenimi slikami in prilogami. Razširitve MIME je mogoče dodati sporočilu v standardnem formatu RFC/822, tako da je dosežena združljivost s starejšimi poštnimi sistemi.
1. korak
Naložite vsebino e-poštnega sporočila.
2. korak
Preverite glavo "Content-Type". Če je vrsta vsebine večdelna (tj. "večdelno/mešano", "večdelno/alternativno" itd.), bo imelo sporočilo več razdelkov za razčlenitev. Če je vrsta vsebine večdelna, nadaljujte s spodnjimi koraki.
3. korak
Glava Content-Type mora vsebovati enoličen niz, ki ga uporablja koda, ki je ustvarila sporočilo MIME za označevanje meja delov MIME. Primer:
Vrsta vsebine:večdelno/mešano; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
Mejni niz je v tem primeru "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
4. korak
Vsak del MIME bo ločen z mejnim nizom, pred katerim sta dve pomišljaji (»--«) v prazni vrstici. Sporočilo boste morali pregledati vrstico za vrstico in poiskati meje delov. Vse besedilo med mejami razen končnega CR/LF je del tega dela MIME.
Pomembno:zadnji del MIME se konča z robnim nizom, ki mu sledita še dve pomišljaji.
Primer:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Prvi del MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Drugi del MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Zadnji del MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
5. korak
Nato je treba vsak del MIME razčleniti. Format vsakega dela MIME je podoben izvirnemu sporočilu v formatu RFC/822. Vseboval bo niz glav, ki jim bo sledila prazna vrstica, nato pa podatki o telesu.
6. korak
Del MIME je lahko sam večdelni, z lastno glavo "Content-Type" in robnim nizom. Vaša koda mora rekurzivno razčleniti dele MIME, dokler ne doseže podrejenih vozlišč.
7. korak
Del MIME je lahko preprosto binarna priloga. V tem primeru bo običajno dobavljena glava imena datoteke skupaj s kodiranjem prenosa. BASE64 je priljubljena vrsta kodiranja. V tem primeru mora biti celotno telo dela MIME dekodirano BASE64. Kot primer je tukaj prvih nekaj vrstic priložene slike JPG:
------= 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 MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQABQQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
8. korak
Telo HTML sporočila mora biti v razdelku MIME z ContentType:Text/Html znotraj razdelka ContentType:Multipart/Alternative MIME.
9. korak
Telo sporočila v navadnem besedilu mora biti v razdelku MIME z ContentType:Text/plain znotraj razdelka ContentType:Multipart/Alternative MIME.
Nasvet
Za več informacij si oglejte RFC 822 http://www.ietf.org/rfc/rfc0822.txt?number=822 in RFC 1341 http://www.ietf.org/rfc/rfc1341.txt?number=1341. Če kodirate v C#, je na http://www.codeproject.com/csharp/mime_project.asp na voljo odlična brezplačna knjižnica.