Qu’est-ce que MIME ?
Conçu à une époque où le courrier électronique se limitait à du texte, le protocole SMTP impose certaines restrictions sur le contenu des courriers électroniques : il ne doit être composé que de caractères ASCII, les lignes ne peuvent pas excéder 1000 caractères et la taille totale du contenu ne peut pas excéder une certaine dimension. Une containte un peu problématique pour envoyer des e-mails multimédia !
L’extension MIME a donc été conçue pour remédier à cet inconvénient.
MIME est une spécification d’Internet, permettant d’échanger des textes écrits dans des langues différentes (et utilisant des ensembles de caractères différents) ainsi que des documents de tous types (images, sons, vidéos…), entre des machines de systèmes différents (PC, Mac, Linux, Unix, etc.).
Avec MIME, vous pouvez donc transmettre de façon transparente à tous les destinataires connectés à Internet des messages contenant par exemple:
- des textes contenant des caractères autres que l’ASCII, par exemple des caractères accentués
- du texte enrichi (gras, souligné, couleur…)
- des images
- des sons
- des fichiers
En pratique, comment fonctionne MIME ?
MIME prend en charge votre message électronique. Il en encode les différentes parties (texte principal, pièces jointes) et place dans l’entête les informations pour que le logiciel qui réceptionne le message puisse le décoder.
Un exemple ? Si vous éditez le « code source » du message (consultez la page sur le code source du message pour savoir comment faire), vous voyez apparaître la véritable nature du courrier, sans décodage par la messagerie.
Dans l’entête du message
Mime-version: 1.0 | Annonce que le message utilise MIME et précise la version utilisée |
Content-type: multipart/mixed; boundary= »E5F934616F3D7E91EBA02022″ | Annonce que le message est composé de plusieurs parties hétérogènes |
Corps du message
This is a multipart MIME message –Boundary_(E5F934616F3D7E91EBA02022) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: quoted-printable |
Première partie du message : on nous annonce que va suivre un texte, encodé en quoted printable |
Ci-joint le sch=E9ma que j’avais promis de t’envoyer. Bonne r=E9ception ! S=E9b | Le texte en question : le quoted printable est identifiable aux =E9 |
–Boundary_(E5F934616F3D7E91EBA02022) Content-type: image/gif; name=schema.gif Content-transfer-encoding: base64 Content-disposition: attachment; filename=schema.gif Content-description: schema.gif |
Seconde partie du message : ici il s’agit d’une image au format gif, encodée en base64. |
R0lGODdhEAAQAPAAAAAAAP///ywAAAAAEAAQ AAACKIyPqcCt2NyDINR5mMW5Xi5x1pdEhjai IZqe7KtubibT44lFbE6KUwEAOw== | L’image (encodée) en question : le base64 est identifiable à l’utilisation exclusive des caractères A-Z, a-z, +, /, et =) |
–Boundary_(E5F934616F3D7E91EBA02022)– | Fin |
Quelles sont les différents formats et encodage utilisés ?
Quelques formats MIME courants:
- text/plain : ensemble des caractères US-ASCII seulement
- test/richtext : textes avec mises en évidences (gras, soulignés…)
- audio/basic
- application/postscript
- image/gif
- …
Les principaux encodages :
- Le Quoted-Printable
Utilisé pour le texte uniquement. Les caractères accentués sont remplacés par des signes = suivis du code hexadécimal du caractère (par exemple =E9 pour « é »…). - Le Base64
Les caractères 8 bits sont codés sur 6 bits : un groupe de 3 octets (soit 24 bits) devient ainsi 4 ensembles de 6 bits, les 6 bits représentant un sous-ensemble de l’US-ASCII : A-Z, a-z, +, /, et =.