Le courrier électronique - Standard MIME
Introduction à MIME
MIME (Multipurpose Internet Mail Extensions) est un standard qui a été
proposé par les laboratoires Bell Communications en 1991 afin d'étendre les possibilités
limitées du courrier électronique (mail) et notamment de permettre d'insérer des
documents (images, sons, texte, ...) dans un courrier. Il est défini à l'origine par les RFC 1341 et 1342
datant de juin 1992.
MIME propose de décrire, grâce à des en-têtes,
le type de contenu du message et le codage utilisé.
MIME apporte à la messagerie les fonctionnalités suivantes :
- Possibilité d'avoir plusieurs objets (pièces jointes) dans un même message ;
- Une longueur de message illimitée ;
- L'utilisation de jeux de caractères (alphabets) autres que le code ASCII ;
- L'utilisation de texte enrichi (mise en forme des messages, polices de caractères, couleurs, etc.) ;
- Des pièces jointes binaires (exécutables, images, fichiers audio ou vidéo, etc.),
comportant éventuellement plusieurs parties ;
MIME utilise des directives d’entête spécifiques pour décrire le format
utilisé dans le corps d’un message, afin de permettre au client de messagerie
de pouvoir l'interpréter correctement :
- MIME-Version: Il s'agit de version du standard MIME utilisée dans le message.
Actuellement seule la version 1.0 existe.
- Content-type : Décrit le type et les sous-type des données.
Il peut posséder un paramètre « charset », séparé
par un point-virtule, définissant le jeu de caractères utilisé.
- Content-Transfer-Encoding : Définit l’encodage utilisé dans le corps du message.
- Content-ID : Représente un identificateur unique de partie de message.
- Content-Description : Donne des informations complémentaires sur le contenu du message.
- Content-Disposition : Définit les paramètres de la pièce jointe, notamment
le nom associé au fichier grâce à l'attribut filename.
Types MIME principaux
Le type MIME, utilisé dans l'entête Content-Type, est utilisé
d'une part pour typer les documents attachés à un courrier.
Un type MIME est constitué de la manière suivante :
Content-type: type_mime_principal/sous_type_mime
Une image GIF possèdera par exemple le type MIME suivant :
Content-type: image/gif
Les types principaux de données, appelés parfois « types de données discrets »,
sont les suivants :
- text: données textuelles lisibles.
text/rfc822 [RFC822] ; text/plain [RFC2646] ; text/html [RFC2854] .
- image: données binaires représentant des images numériques
image/jpeg ; image/gif ; image/png.
- audio: données numériques sonores
audio/basic ; audio/wav
- video : données vidéos :
video/mpeg
- application : données binaires autres.
application/octet-stream ;
application/pdf
Le type MIME est également utilisé sur le Web, pour typer les documents transférés par le protocole HTTP.
Ainsi, lors d'une transaction entre un serveur web et un navigateur internet, le serveur web envoie en premier lieu
le type MIME du fichier envoyé au navigateur, afin que ce dernier puisse savoir comment afficher le document.
Formats de codage
Pour transférer des données binaires, MIME propose cinq formats de codage pouvant
être utilisé dans l'entête Transfer-encoding :
- 7bit : format texte codé sur 7 bits (pour les messages non accentués) ;
- 8bit : format texte 8 bits ;
- quoted-printable : format Quoted-Printable, recommandé pour les messages utilisant
un alphabet codé sur plus de 7 bits (présence d'accents par exemple) ;
- base64 : format Base 64, recommandé pour l'envoi de fichiers binaires en pièce jointe ;
- binary : format binaire, déconseillé.
MIME, étant très ouvert, permet d'utiliser
des formats de codage tierstels que les suivants :
Encodage de entêtes
L'utilisation de l'entête Transfer-encoding permet de préciser un format
d'encodage pour le corps du message, mais ne résoud pas le problème de l'encodage
des entêtes eux-mêmes (par exemple le sujet du message).
Ainsi, pour permettre d'encoder les entêtes avec des alphabets de plus de
7 bits, et permettre par exemple d'avoir un sujet de mail accentué, le standard MIME propose
le format suivant :
=?charset?encodage?resultat?=
- charset représente le jeu de caractère utilisé,
- encodage définit l'encodage souhaité avec deux valeurs possibles :
- Q pour quoted-printable
- B pour base64
- resultat: texte encodé selon la méthode spécifiée.
Voici ci-dessous un exemple en codage
Quoted-Printable avec « Comment ça marche ? » comme sujet de message :
Subject: Comment =?ISO-8859-1?Q?=E7a_marche_=3F?=
Messages composites
Grâce au type MIME « multipart » le standard MIME permet de définir des messages composites, c'est-à-dire
des messages comportant plusieurs pièces jointes, éventuellement emboîtées.
Pour ce faire, MIME permet de définir
un séparateur appelé boundary. Il s'agit d'une chaîne arbitraire
définie en attribut de l'entête Content-type :
Content-Type: multipart/mixed;
boundary="------------020005090303070203010601"
Chaque séparateur délimite un contenu commençant
par les entêtes
Content-Type et
Content-Encoding.
Il est essentiel que la valeur de ce séparateur n'existe pas dans le contenu du message.
Il existe plusieurs types de séparateurs :
- multipart/mixed définit une suite de plusieurs éléments
- multipart/alternative définit différentes alternatives pour une même information, par exemple un message
au format texte et HTML. Si le client de messagerie est capable et configuré pour l'afficher avec une mise en forme, il affichera
la version HTML, sinon il affichera la version texte.
- multipart/parallel définit des données présenter en même temps (son et image par exemple).
- multipart/signed définit une signature numérique pour les données du message
- multipart/related définit des informations liées entre elles
Liste des types MIME
Les types MIME sont normalisés par un organisme appelé
IANA (Internet Assigned Numbers Authority). Voici une liste non exhaustive
des types MIME les plus courants
Type MIME |
Type de fichier |
Extension associée |
application/atom+xml |
Fichiers au format ATOM |
atom |
application/iges |
Fichiers CAS |
iges |
application/javascript |
Fichiers Javascript |
js |
application/dxf |
Fichiers AutoCAD |
dxf |
application/mp4 |
Fichiers MPEG4 |
mp4 |
application/iges |
Format d'échange CAO IGES |
igs,iges |
application/octet-stream |
Fichiers binaires non interprétés |
bin |
application/msword |
Fichiers bureautique au format Microsoft Word |
doc |
application/pdf |
Fichiers Adobe Acrobat |
pdf |
application/postscript |
Fichiers PostScript |
ai,eps,ps |
application/rtf |
Format de texte enrichi |
rtf |
application/sgml |
Fichiers SGML |
sgml |
application/vnd.ms-excel |
Fichiers tableur au format Microsoft Excel |
xls |
application/vnd.ms-powerpoint |
Fichiers diaporama au format Microsoft Powerpoint |
ppt |
application/xml |
fichier XML |
xml |
application/x-tar |
Fichiers compressés tar |
tar |
application/zip |
Fichiers compressés ZIP |
man |
audio/basic |
Fichiers audio basiques |
au,snd |
audio/mpeg |
Fichiers audio MPEG |
mpg,mp3 |
audio/mp4 |
Fichiers audio MPEG-4 |
mp4 |
audio/x-aiff |
Fichiers audio AIFF |
aif,aiff,aifc |
audio/x-wav |
Fichiers audio Wave |
wav |
image/gif |
Images gif |
man |
image/jpeg |
Images JPEG |
jpg,jpeg,jpe |
image/png |
Images PNG |
png |
image/tiff |
Images Tiff |
tiff,tif |
image/x-portable-bitmap |
Fichiers Bitmap PBM |
pbm |
image/x-portable-graymap |
Fichiers Graymap PBM |
pgm |
image/x-portable-pixmap |
Fichiers Pixmap PBM |
ppm |
multipart/x-zip |
Fichiers archive zip |
zip |
multipart/x-gzip |
Fichiers archive GNU zip |
gz,gzip |
text/css |
Feuille de style |
css |
text/csv |
Fichiers texte avec séparation des valeurs |
csv |
text/html |
Fichiers HTML |
htm,html |
text/plain |
Fichiers texte sans mise en forme |
txt,g,h,c,cc,hh,m,f90 |
text/richtext |
Fichiers texte enrichis |
rtx |
text/rtf |
Fichiers texte au format Rich Text Format |
rtf |
text/tab-separated-value |
Fichiers texte avec séparation des valeurs |
tsv |
text/xml |
Fichiers XML |
xml |
video/h264 |
Vidéos H.264 |
h264 |
video/dv |
Vidéos au format DV |
dv |
video/mpeg |
Vidéos MPEG |
mpeg,mpg,mpe |
video/quicktime |
Vidéos QuickTime |
qt,mov |
video/msvideo |
Vidéos Microsoft Windows |
avi |
Plus d'information
- Liste officielle des types MIME (IANA - )
- RFC principales :
- RFC 2045: MIME Part One: Format of Internet Message Bodies
- RFC 2046: MIME Part Two: Media Types
- RFC 2047: MIME Part Three: Message Header Extensions for Non-ASCII Text
- RFC 2048: MIME Part Four: Registration Procedures
- RFC 2049: MIME Part Five: Conformance Criteria and Examples
- RFC annexes :
- RFC 1524: The formal description of mailcap files. Mailcap files describe how to handle media types.
- RFC 2015: MIME Security with Pretty Good Privacy (PGP).
- RFC 2110: MIME E-mail Encapsulation of Aggregate Documents, such as HTML (MHTML).
- RFC 2111: Content-ID and Message-ID Uniform Resource Locators.
- RFC 2112: The MIME Multipart/Related Content-type.
- RFC 2183: Defines the syntax and sematics of the "Content-Disposition" header to convey presentational information.
- RFC 2184: MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations
Discussions pertinentes trouvées dans le forum