Standard MIME (Multipurpose Internet Mail Extensions)


 

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 :

  • BinHex (format propriétaire appartenant à Apple),
  • uuencode,
  • xxencode

 

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ésout 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 MIMEType de fichierExtension associée
application/atom+xmlFichiers au format ATOMatom
application/igesFichiers CASiges
application/javascriptFichiers Javascriptjs
application/dxfFichiers AutoCADdxf
application/mp4Fichiers MPEG4mp4
application/igesFormat d'échange CAO IGESigs,iges
application/octet-streamFichiers binaires non interprétésbin
application/mswordFichiers bureautique au format Microsoft Worddoc
application/pdfFichiers Adobe Acrobatpdf
application/postscriptFichiers PostScriptai,eps,ps
application/rtfFormat de texte enrichirtf
application/sgmlFichiers SGMLsgml
application/vnd.ms-excelFichiers tableur au format Microsoft Excelxls
application/vnd.ms-powerpointFichiers diaporama au format Microsoft Powerpointppt
application/xmlfichier XMLxml
application/x-tarFichiers compressés tartar
application/zipFichiers compressés ZIPman
audio/basicFichiers audio basiquesau,snd
audio/mpegFichiers audio MPEGmpg,mp3
audio/mp4Fichiers audio MPEG-4mp4
audio/x-aiffFichiers audio AIFFaif,aiff,aifc
audio/x-wavFichiers audio Wavewav
image/gifImages gifman
image/jpegImages JPEGjpg,jpeg,jpe
image/pngImages PNGpng
image/tiffImages Tifftiff,tif
image/x-portable-bitmapFichiers Bitmap PBMpbm
image/x-portable-graymapFichiers Graymap PBMpgm
image/x-portable-pixmapFichiers Pixmap PBMppm
multipart/x-zipFichiers archive zipzip
multipart/x-gzipFichiers archive GNU zipgz,gzip
text/cssFeuille de stylecss
text/csvFichiers texte avec séparation des valeurscsv
text/htmlFichiers HTMLhtm,html
text/plainFichiers texte sans mise en formetxt,g,h,c,cc,hh,m,f90
text/richtextFichiers texte enrichisrtx
text/rtfFichiers texte au format Rich Text Formatrtf
text/tab-separated-valueFichiers texte avec séparation des valeurstsv
text/xmlFichiers XMLxml
video/h264Vidéos H.264h264
video/dvVidéos au format DVdv
video/mpegVidéos MPEGmpeg,mpg,mpe
video/quicktimeVidéos QuickTimeqt,mov
video/msvideoVidéos Microsoft Windowsavi

 

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

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

Ce document intitulé «  Standard MIME (Multipurpose Internet Mail Extensions)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.