Kako dekodirati e-poštu u MIME formatu
Većina e-poruka poslanih danas u formatu MIME (Multipupose Internet Mail Extensions). To omogućuje slanje e-pošte s običnim tekstom i obogaćenim tekstom/HTML verzijama, ugrađenim slikama i privicima. MIME ekstenzije mogu se dodati poruci u standardnom RFC/822 formatu tako da se postiže kompatibilnost sa starijim sustavima pošte.
1. korak
Učitajte sadržaj poruke e-pošte.
2. korak
Provjerite zaglavlje "Content-Type". Ako je vrsta sadržaja višedijelna (tj. "višedijelna/mješovita", "višedijelna/alternativna", itd.), poruka će imati više odjeljaka za analizu. Ako je vrsta sadržaja višedijelna, nastavite s donjim koracima.
3. korak
Zaglavlje Content-Type treba sadržavati jedinstveni niz koji koristi kôd koji je generirao MIME poruku za označavanje granica MIME dijela. Primjer:
Vrsta sadržaja:višedijelni/mješoviti; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
Granični niz u ovom slučaju je "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
4. korak
Svaki MIME dio bit će odvojen graničnim nizom kojemu prethode dvije crtice ("--") u praznom retku. Morat ćete skenirati poruku redak po redak tražeći granice dijelova. Sav tekst između granica osim konačnog CR/LF je dio tog MIME dijela.
Važno:posljednji MIME dio završit će s graničnim nizom nakon kojeg slijede još dvije crtice.
Primjer:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Prvi MIME dio.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Drugi MIME dio
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Zadnji MIME dio.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Korak 5
Svaki MIME dio tada treba raščlaniti. Format svakog MIME dijela sličan je izvornoj RFC/822 formatiranoj poruci. Sadržat će niz zaglavlja, nakon kojih slijedi prazan redak, a zatim podatke o tijelu.
Korak 6
MIME dio može sam biti višedijelni, sa svojim vlastitim zaglavljem "Content-Type" i graničnim nizom. Vaš kod mora rekurzivno analizirati MIME dijelove dok ne dođe do podređenih čvorova.
7. korak
MIME dio može jednostavno biti binarni privitak. U ovom slučaju obično se isporučuje zaglavlje naziva datoteke, zajedno s kodiranjem prijenosa. BASE64 je popularna vrsta kodiranja. U ovom slučaju cijelo tijelo MIME dijela mora biti BASE64 dekodirano. Kao primjer, ovdje je prvih nekoliko redaka priložene JPG slike:
------= 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
Korak 8
HTML tijelo poruke treba biti u MIME odjeljku s ContentType:Text/Html, unutar ContentType:Multipart/Alternative MIME odjeljka.
Korak 9
Tijelo otvorenog teksta poruke treba biti u MIME odjeljku s ContentType:Text/plain, unutar ContentType:Multipart/Alternative MIME odjeljka.
Savjet
Konzultirajte RFC 822 http://www.ietf.org/rfc/rfc0822.txt?number=822 i RFC 1341 http://www.ietf.org/rfc/rfc1341.txt?number=1341 za više informacija. Ako kodirate u C#, izvrsna besplatna biblioteka dostupna je na http://www.codeproject.com/csharp/mime_project.asp.