Protocole des extensions de courrier Internet (MIME)
Multipurpose Internet Mail Extensions (MIME) est une norme Internet qui étend le format des e‑mails pour prendre en charge :
- texte dans des jeux de caractères autres que US‑ASCII ;
- pièces jointes non textuelles ;
- corps de messages multiparties ; et
- informations d’en-tête dans des jeux de caractères non ASCII.
SMTP ne prend en charge que les caractères ASCII 7 bits, ce qui signifie qu’il ne supporte qu’un petit nombre de langues. Les langues basées sur l’alphabet latin fonctionnent correctement avec SMTP ; les autres langues ne s’affichent pas correctement à la réception du courriel. Cependant, MIME étend la prise en charge des caractères ASCII de SMTP afin que les e‑mails utilisant d’autres jeux de caractères, images et sons puissent être envoyés et affichés. En général, tous les clients de messagerie et les serveurs SMTP traitent correctement les messages au format MIME.
Comprendre les en‑têtes MIME
Les en‑têtes MIME contiennent des informations sur le protocole.
MIME-Version
Cela indique que le message est au format MIME. Il apparaît ainsi :
MIME-Version : 1.0
Content-Type
Cela indique le type de contenu du message, donné sous forme de paire type/sous‑type : text/plain, text/html, par exemple. Le type de contenu multipart peut contenir du texte, du HTML, des pièces jointes, des images, de l’audio, de la vidéo, etc.
Content-Type : multipart
Content-Transfer-Encoding
Indique si un schéma d’encodage binaire‑vers‑texte est utilisé en plus de l’encodage spécifié par le content-type. Le cas échéant, indique lequel. Nous pouvons spécifier ici les types d’encodage 7‑bit, 8‑bit et binaire.
Mot encodé
Les en‑têtes des messages SMTP utilisent normalement des caractères ASCII. Les caractères non ASCII doivent utiliser la syntaxe de mot encodé MIME au lieu d’une chaîne littérale. Le format est :
"=? charset ? encoding ? texte encodé ?=".
Messages multipart
Un message multipart MIME contient une frontière dans l’en‑tête content-type. Cette frontière, qui ne doit pas apparaître dans aucune des parties, est placée entre les parties, ainsi qu’au début et à la fin du corps du message, comme suit :
MIME-version : 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Chaque partie comprend son propre en‑tête de contenu et un corps.
Sous‑types multipart
La norme MIME définit différents sous‑types de messages multiparties. Le sous‑type est spécifié dans l’en‑tête « Content-Type » du message global.
Voici une liste des sous‑types les plus couramment utilisés.
- Mixed : multipart/mixed est utilisé pour envoyer des fichiers avec différents en‑têtes « Content-Type » en ligne. Lors de l’envoi d’images ou d’autres fichiers facilement lisibles, la plupart des clients de messagerie les affichent en ligne.
- Message : une partie message contient un e‑mail.
- Digest : digest est une façon simple d’envoyer plusieurs messages texte. Le type de contenu par défaut de chaque partie est « message/rfc822 ».
- Alternative : le sous‑type alternative indique que chaque partie est une version « alternative » du même (ou similaire) contenu, chacune dans un format différent indiqué par son en‑tête « Content-Type ».
Le type multipart/alternative est le plus couramment utilisé pour les e‑mails à deux parties, une en texte brut (text/plain) et une en HTML (text/html). La partie texte brut assure la compatibilité descendante tandis que la partie HTML permet le formatage et les hyperliens. La plupart des clients de messagerie offrent à l’utilisateur la possibilité de privilégier le texte brut par rapport au HTML ; c’est un exemple de la façon dont des facteurs locaux peuvent influencer le choix, par l’application, de la partie « la meilleure » du message à afficher.