← RFC Reference

RFC 2231 : Extensions des valeurs de paramètres MIME

Norme actuelle MIME — Extensions multiples du courrier Internet Published March 2026
ELI5: Les pièces jointes du courrier électronique ont des noms de fichier, et les noms de fichier peuvent contenir des caractères non-anglais ou être très longs. MIME d'origine ne pouvait gérer que les valeurs ASCII simples dans les en-têtes. RFC 2231 ajoute trois fonctionnalités : la prise en charge des caractères non-ASCII (comme les noms de fichier en japonais ou en arabe), l'étiquetage des langues et le fractionnement des valeurs longues sur plusieurs lignes.

Pourquoi cela existe

Les paramètres MIME apparaissent dans les en-têtes comme Content-Type et Content-Disposition. Le cas d'utilisation le plus courant est le paramètre filename pour les pièces jointes :

Content-Disposition: attachment; filename="report.pdf"

Cela fonctionne bien pour les noms de fichiers ASCII. Mais qu'en est-il d'un fichier nommé 報告書.pdf (japonais pour « rapport ») ou d'un nom de fichier avec 200 caractères ? La spécification MIME d'origine (RFC 2045) n'avait aucun mécanisme pour cela. RFC 2231 résout trois problèmes :

Comment cela fonctionne

Codage du jeu de caractères et de la langue

Pour inclure des caractères non-ASCII, ajoutez un astérisque au nom du paramètre et utilisez le format charset'language'encoded-value :

Content-Disposition: attachment;
    filename*=UTF-8''%E5%A0%B1%E5%91%8A%E6%9B%B8.pdf
             ^^^^^^^  ^^  ^^^^^^^^^^^^^^^^^^^^^^^^
             jeu de car  langue  valeur encodée en pourcentage
                     (vide = aucune balise de langue)

La valeur %E5%A0%B1%E5%91%8A%E6%9B%B8 correspond aux octets UTF-8 pour « 報告書 » encodés en pourcentage. La balise de langue entre les guillemets simples est facultative (souvent laissée vide).

Continuations pour les longues valeurs

Lorsqu'une valeur de paramètre est trop longue pour une seule ligne d'en-tête, divisez-la en utilisant des continuations numérotées :

Content-Type: application/pdf;
    filename*0="very-long-document-name-that-exceeds-the";
    filename*1="-reasonable-line-length-limit-for-headers.pdf"

Les parties sont réassemblées dans l'ordre numérique : *0, *1, *2, etc.

Combiné : continuations avec jeux de caractères

Pour les longues valeurs non-ASCII, combinez les deux fonctionnalités. Seul le premier segment inclut le jeu de caractères et la langue ; les segments suivants sont simplement des valeurs encodées :

Content-Disposition: attachment;
    filename*0*=UTF-8''%E3%81%93%E3%82%8C%E3%81%AF%E9%95%B7;
    filename*1*=%E3%81%84%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB;
    filename*2*=%E5%90%8C%E5%90%8D.pdf
          ^^^^
          numéro + astérisque = continuation encodée

Détails techniques clés

Syntaxe du nom de paramètre

Forme Signification Exemple
filename Valeur ASCII ordinaire filename="report.pdf"
filename* Valeur encodée (charset'lang'value) filename*=UTF-8''%E5%A0%B1.pdf
filename*0 Partie continuation 0, ASCII ordinaire filename*0="very-long-"
filename*0* Partie continuation 0, encodée filename*0*=UTF-8''%E5%A0%B1

Règles d'encodage

Interaction avec RFC 2047

RFC 2047 fournit des mots codés (=?UTF-8?B?...?=) pour le texte non-ASCII dans les en-têtes. Cependant, RFC 2047 stipule explicitement que les mots codés ne DOIVENT PAS apparaître dans les chaînes entre guillemets ou les valeurs de paramètres. RFC 2231 est le mécanisme correct pour les paramètres MIME. Malgré cette règle, de nombreux clients de courrier utilisent RFC 2047 dans les paramètres filename de toute façon, les analyseurs robustes doivent donc gérer les deux.

Erreurs courantes

Impact sur la délivrabilité

Related RFCs