← RFC Reference

RFC 2231: MIMEパラメータ値拡張

Current Standard MIME — Multipurpose Internet Mail Extensions Published March 2026
ELI5: メール添付ファイルはファイル名を持ており、ファイル名には非英語文字が含まれたり、非常に長くなったりする可能性があります。元のMIMEはヘッダーにプレーンASCII値のみを処理できました。RFC 2231は3つの機能を追加します。非ASCII文字(日本語またはアラビア語のファイル名など)のサポート、言語タグ付け、および長い値を複数行に分割するサポートです。

これが存在する理由

MIMEパラメータはContent-TypeContent-Dispositionなどのヘッダに現れます。最も一般的な用途は、添付ファイルのfilenameパラメータです:

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

これはASCIIファイル名では問題なく機能します。しかし報告書.pdf(「報告書」という意味の日本語)という名前のファイルや、200文字のファイル名の場合はどうでしょうか?元のMIME仕様(RFC 2045)にはこれに対するメカニズムがありませんでした。RFC 2231は3つの問題を解決します:

仕組み

文字セットと言語のエンコーディング

非ASCII文字を含めるには、パラメータ名にアスタリスクを付けてcharset'language'encoded-value形式を使用します:

Content-Disposition: attachment;
    filename*=UTF-8''%E5%A0%B1%E5%91%8A%E6%9B%B8.pdf
             ^^^^^^^  ^^  ^^^^^^^^^^^^^^^^^^^^^^^^
             charset  lang  パーセントエンコード値
                     (空 = 言語タグなし)

%E5%A0%B1%E5%91%8A%E6%9B%B8は「報告書」のUTF-8バイトをパーセントエンコードしたものです。単引用符の間の言語タグはオプション(多くの場合、空のままにされます)。

長い値の継続

パラメータ値が1つのヘッダ行に収まらない場合は、番号付き継続を使用して分割します:

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

パーツは数値順に再度統合されます:*0*1*2など。

組み合わせ:文字セットを使用した継続

長い非ASCII値の場合、両方の機能を組み合わせます。最初のセグメントのみが文字セットと言語を含みます。その後のセグメントはエンコード値のみです:

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%8D.pdf
          ^^^^
          番号 + アスタリスク = エンコード継続

重要な技術詳細

パラメータ名構文

形式 意味
filename プレーンASCII値 filename="report.pdf"
filename* エンコード値(charset'lang'value) filename*=UTF-8''%E5%A0%B1.pdf
filename*0 継続パーツ0、プレーンASCII filename*0="very-long-"
filename*0* 継続パーツ0、エンコード filename*0*=UTF-8''%E5%A0%B1

エンコーディング規則

RFC 2047との相互作用

RFC 2047はヘッダ内の非ASCIーテキストのためにエンコード語(=?UTF-8?B?...?=)を提供します。しかしながら、RFC 2047はエンコード語が引用符で囲まれた文字列またはパラメータ値の内部に出現してはいけないと明示的に述べています。RFC 2231はMIMEパラメータの正しいメカニズムです。このルールにもかかわらず、多くのメールクライアントはfilenameパラメータにRFC 2047を使用しているため、堅牢なパーサーは両方を処理する必要があります。

一般的な間違い

配信可能性への影響

Related RFCs