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 messages : 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.
Un peu problématique pour envoyer des e-mails multimédia !
L'extension MIME a é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 message avec un simple éditeur
de texte, vous voyez apparaîtrela véritable nature du
courrier (on pourrait dire son code source), sans décodage
par le logiciel.
| 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 =.
|
|