Cum să decodați un e-mail în format MIME

Cele mai multe e-mailuri trimise astăzi sunt formatate MIME (Multipupose Internet Mail Extensions). Acest lucru permite trimiterea e-mailurilor cu text simplu și versiuni de text îmbogățit/HTML, imagini integrate și atașamente. Extensiile MIME pot fi adăugate la un mesaj în format standard RFC/822, astfel încât compatibilitatea inversă este realizată cu sistemele de e-mail mai vechi.

Pasul 1

Încărcați conținutul mesajului de e-mail.

Videoclipul zilei

Pasul 2

Verificați antetul „Content-Type”. Dacă tipul de conținut este în mai multe părți (adică „multipart/mixed”, „multipart/alternative”, etc), mesajul va avea mai multe secțiuni de analizat. Dacă tipul de conținut este în mai multe părți, continuați cu pașii de mai jos.

Pasul 3

Antetul Content-Type ar trebui să conțină un șir unic utilizat de codul care a generat mesajul MIME pentru a desemna limitele părții MIME. Exemplu:

Tip de conținut: mai multe părți/mixt; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

Șirul de limită în acest caz este „part_c7161025_fe8a_45f4_83ef_6befcfa5d021”.

Pasul 4

Fiecare parte MIME va fi separată de șirul de limită precedat de două liniuțe ("--") pe o linie goală. Va trebui să scanați mesajul linie cu linie căutând limitele părții. Tot textul dintre granițe cu excepția CR/LF final face parte din acea parte MIME.

Important: Ultima parte MIME se va încheia cu șirul de limită urmat de încă două liniuțe.

Exemplu:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Prima parte MIME.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 A doua parte MIME

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Ultima parte MIME.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

Pasul 5

Fiecare parte MIME trebuie apoi analizată. Formatul fiecărei părți MIME este similar cu mesajul original formatat RFC/822. Acesta va conține o serie de anteturi, urmate de o linie goală, apoi datele corpului.

Pasul 6

O parte MIME poate fi ea însăși în mai multe părți, cu propriul antet „Content-Type” și șir de limită. Codul dvs. trebuie să analizeze recursiv părți MIME până ajunge la nodurile secundare.

Pasul 7

O parte MIME poate fi pur și simplu un atașament binar. În acest caz, va fi furnizat de obicei un antet de nume de fișier, împreună cu codificarea transferului. BASE64 este un tip de codificare popular. În acest caz, întregul corp al părții MIME trebuie să fie decodat BASE64. Ca exemplu, iată primele câteva rânduri ale unei imagini JPG atașate:

=NextPart_003_01C755EF.43F2628D Content-Type: imagine/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filename="testimage.jpg"

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

Pasul 8

Corpul HTML al mesajului ar trebui să fie într-o secțiune MIME cu ContentType: Text/Html, în interiorul unei secțiuni ContentType: Multipart/Alternative MIME.

Pasul 9

Corpul text simplu al mesajului ar trebui să fie într-o secțiune MIME cu ContentType: Text/plain, în interiorul unei secțiuni ContentType: Multipart/Alternative MIME.

Lucruri de care veți avea nevoie

  • Cunoașterea unui limbaj informatic (adică C++, C#, VB etc.).

  • Cunoștințe de bază despre formatul unui mesaj de e-mail formatat RFC/822.

Bacsis

Consultați RFC 822 http://www.ietf.org/rfc/rfc0822.txt? număr=822 și RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? număr=1341 pentru mai multe informatii. Dacă codificați în C#, o bibliotecă excelentă gratuită este disponibilă la http://www.codeproject.com/csharp/mime_project.asp.