>> Électroniques Technologie >  >> Maison intelligente >> Vie intelligente

Comment décoder un e-mail au format MIME

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 standard RFC/822 afin d'obtenir une rétrocompatibilité avec les anciens systèmes de messagerie.

Étape 1

Chargez le contenu du message électronique.

Étape 2

Vérifiez l'en-tête "Content-Type". 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 ; limite="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 vide. Vous devrez scanner 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 délimitation 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 des 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 délimitation. Votre code doit analyser de manière récursive 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 de nom de fichier sera généralement fourni, ainsi que 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" Content-Transfer-Encoding :base64 Content-Description :testimage.jpg Content-Disposition :pièce jointe ; filename="testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQABQQDASIA 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 message en clair doit se trouver dans une section MIME avec ContentType :Text/plain, à l'intérieur d'une section ContentType :Multipart/Alternative MIME.

Astuce

Consultez RFC 822 http://www.ietf.org/rfc/rfc0822.txt?number=822 et RFC 1341 http://www.ietf.org/rfc/rfc1341.txt?number=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.


Vie intelligente