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:
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 |
Quelques formats MIME courants:
Les principaux encodages :