La plupart des e-mails envoyés aujourd'hui sont au format MIME (Multipupose Internet Mail Extensions). Cela permet d'envoyer des e-mails avec des versions en texte brut et en texte enrichi/HTML, des images en ligne et des pièces jointes. Des extensions MIME peuvent être ajoutées à un message au format RFC/822 standard afin d'obtenir une compatibilité descendante avec les anciens systèmes de messagerie.
Étape 1
Chargez le contenu du message électronique.
Vidéo du jour
Étape 2
Vérifiez l'en-tête « Type de contenu ». Si le type de contenu est multipart (c'est-à-dire "multipart/mixed", "multipart/alternative", etc.), le message aura plusieurs sections à analyser. Si le type de contenu est en plusieurs parties, continuez avec les étapes ci-dessous.
Étape 3
L'en-tête Content-Type doit contenir une chaîne unique utilisée par le code qui a généré le message MIME pour désigner les limites des parties MIME. Exemple:
Type de contenu: multipart/mixte; borne="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
La chaîne de limite dans ce cas est "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
Étape 4
Chaque partie MIME sera séparée par la chaîne de délimitation précédée de deux tirets ("--") sur une ligne vierge. Vous devrez parcourir le message ligne par ligne à la recherche des limites de la pièce. Tout le texte entre les limites sauf le CR/LF final fait partie de cette partie MIME.
Important: la dernière partie MIME se terminera par la chaîne de limite suivie de deux autres tirets.
Exemple:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Première partie MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Deuxième partie MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Dernière partie MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Étape 5
Chaque partie MIME doit ensuite être analysée. Le format de chaque partie MIME est similaire au message formaté RFC/822 d'origine. Il contiendra une série d'en-têtes, suivis d'une ligne vide, puis les données du corps.
Étape 6
Une partie MIME peut elle-même être en plusieurs parties, avec son propre en-tête "Content-Type" et sa propre chaîne de limite. Votre code doit analyser récursivement les parties MIME jusqu'à ce qu'il atteigne les nœuds enfants.
Étape 7
Une partie MIME peut simplement être une pièce jointe binaire. Dans ce cas, un en-tête Filename sera généralement fourni, avec l'encodage de transfert. BASE64 est un type d'encodage populaire. Dans ce cas, tout le corps de la partie MIME doit être décodé en BASE64. À titre d'exemple, voici les premières lignes d'une image JPG jointe :
=NextPart_003_01C755EF.43F2628D Type de contenu: image/jpeg; name="testimage.jpg" Contenu-Transfer-Encodage: base64 Contenu-Description: testimage.jpg Contenu-Disposition: pièce jointe; nom de fichier="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjjMjMA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
Étape 8
Le corps HTML du message doit se trouver dans une section MIME avec ContentType: Text/Html, à l'intérieur d'une section ContentType: Multipart/Alternative MIME.
Étape 9
Le corps du texte en clair du message doit se trouver dans une section MIME avec ContentType: Text/plain, à l'intérieur d'une section ContentType: Multipart/Alternative MIME.
Choses dont vous aurez besoin
Connaissance d'un langage informatique (c'est-à-dire C++, C#, VB, etc.).
Connaissance de base du format d'un message électronique au format RFC/822.
Conseil
Consulter la RFC 822 http://www.ietf.org/rfc/rfc0822.txt? nombre=822 et RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? nombre=1341 pour plus d'informations. Si vous codez en C#, une excellente bibliothèque gratuite est disponible sur http://www.codeproject.com/csharp/mime_project.asp.