← RFC Reference

RFC 2046 : MIME Partie 2 — Types de médias

Piste des normes MIME — Extensions polyvalentes du courrier Internet Published March 2026
ELI5: [RFC 2045](2045) a défini l'enveloppe pour les e-mails. RFC 2046 définit les types de choses que vous pouvez mettre à l'intérieur : texte, images, audio, vidéo, applications — et surtout, comment mettre plusieurs choses dans une enveloppe. C'est la raison pour laquelle un seul e-mail peut contenir un corps en texte, un corps en HTML et trois fichiers joints.

Pourquoi cela existe

RFC 2045 a introduit Content-Type et les encodages de transfert, mais il n'a pas défini quels types de contenu existent ou comment ils se comportent. RFC 2046 comble cette lacune en définissant :

C'est le RFC qui rend la messagerie électronique moderne possible. Sans lui, chaque e-mail serait un seul bloc de texte.

Comment cela fonctionne

Les types de médias de niveau supérieur

Type Description Sous-types courants
text Texte lisible par l'homme text/plain, text/html, text/calendar
image Données d'image image/png, image/jpeg, image/gif, image/svg+xml
audio Données audio audio/mpeg, audio/ogg
video Données vidéo video/mp4, video/webm
application Données binaires ou formats structurés application/pdf, application/json, application/octet-stream
multipart Plusieurs parties du corps dans un message multipart/mixed, multipart/alternative, multipart/related
message Message e-mail encapsulé message/rfc822, message/delivery-status

Le mécanisme Multipart

Les types multipart sont au cœur de RFC 2046. Un message multipart contient un paramètre boundary qui délimite chaque partie :

Content-Type: multipart/mixed; boundary="----=_boundary_001"

------ préambule (ignoré par les clients MIME) ------

------=_boundary_001
Content-Type: text/plain; charset=utf-8

Ceci est la première partie.

------=_boundary_001
Content-Type: text/plain; charset=utf-8

Ceci est la deuxième partie.

------=_boundary_001--
^^^ remarque le -- de fin qui marque la fin

Règles clés pour les limites :

Sous-types Multipart

Le sous-type indique au client de messagerie comment afficher les parties. C'est là que réside la subtilité.

multipart/mixed — Parties séquentielles

Le type multipart le plus courant. Les parties sont affichées dans l'ordre. Utilisé pour « corps du message + pièces jointes » :

Content-Type: multipart/mixed; boundary="----=_mixed"

------=_mixed
Content-Type: text/plain; charset=utf-8

Voici le rapport que vous avez demandé.

------=_mixed
Content-Type: application/pdf; name="report.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report.pdf"

JVBERi0xLjQKJeLjz9MK...

------=_mixed--

multipart/alternative — Même contenu, formats différents

Contient plusieurs versions du même contenu. Le client de messagerie choisit la meilleure qu'il peut afficher. Les parties sont ordonnées du plus simple au plus riche — la dernière partie est préférée :

Content-Type: multipart/alternative; boundary="----=_alt"

------=_alt
Content-Type: text/plain; charset=utf-8

Bienvenue dans notre service !

------=_alt
Content-Type: text/html; charset=utf-8

<h1>Bienvenue dans notre service !</h1>
<p>Nous sommes heureux de vous avoir.</p>

------=_alt--

C'est ainsi que fonctionne chaque e-mail HTML bien formé : la réserve text/plain vient en premier, la version text/html vient en dernier. Un client qui supporte HTML affiche le HTML ; un client en texte brut affiche le texte.

multipart/related — Parties liées

Utilisé lorsque les parties se référencent les unes aux autres. Le cas d'usage le plus courant est un e-mail HTML avec des images intégrées. Le HTML référence les images par ID de contenu (URLs cid:) :

Content-Type: multipart/related; boundary="----=_rel"

------=_rel
Content-Type: text/html; charset=utf-8

<p>Découvrez notre logo :</p>
<img src="cid:logo@example.com" alt="Logo" />

------=_rel
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-ID: <logo@example.com>

iVBORw0KGgoAAAANSUhEU...

------=_rel--

multipart/digest — Collection de messages

Une variante de mixed où le type de contenu par défaut pour chaque partie est message/rfc822 au lieu de text/plain. Utilisé par les digests de listes de diffusion. Rarement vu dans la messagerie électronique moderne.

Détails techniques clés

Imbrication de types Multipart

La véritable puissance de MIME vient de l'imbrication. Un e-mail de marketing typique avec des images intégrées et une pièce jointe ressemble à ceci :

; La structure standard pour un e-mail HTML avec des images intégrées + pièces jointes

Content-Type: multipart/mixed           ← externe : corps + pièces jointes
  |
  |-- multipart/alternative              ← corps : texte ou HTML
  |     |-- text/plain                    ← réserve texte brut
  |     |-- multipart/related             ← HTML + images intégrées
  |           |-- text/html               ← le corps HTML
  |           |-- image/png (cid:logo)    ← image intégrée
  |
  |-- application/pdf (attachment)       ← pièce jointe

Cette imbrication à trois niveaux est le modèle standard utilisé par pratiquement toutes les bibliothèques de messagerie et les fournisseurs de services de messagerie.

Le type message/rfc822

Encapsule un message e-mail complet en tant que partie du corps. Utilisé pour transférer des messages en tant que pièces jointes et dans les notifications de rebond (RFC 3462 multipart/report). Le message encapsulé possède ses propres en-têtes (From, To, Subject, etc.) et son corps.

La réserve application/octet-stream

Lorsque le type de contenu d'un fichier est inconnu, utilisez application/octet-stream. Cela indique au client de le traiter comme des données binaires génériques et déclenche généralement une invite de téléchargement. C'est l'équivalent MIME de « Je ne sais pas ce que c'est ; enregistrez-le et découvrez-le vous-même ».

Exigences de limite

La chaîne limite a des règles spécifiques :

Erreurs courantes

Impact sur la délivrabilité

Related RFCs