Multipurpose Internet Mail Extensions

Multipurpose Internet Mail Extension (MIME) について



Multipurpose Internet Mail Extension(MIME、マイム)は、インターネット電子メールで、US-ASCIIテキスト以外の様々なデータ形式を扱えるようにするための規格です。RFC 2045、RFC 2046、RFC 2047、RFC 4288、RFC 4289、RFC 2049 などで規定されています。

背景



従来の電子メールの規格である RFC 5322(旧RFC 822、RFC 2822)では、7ビットで表現される US-ASCII 文字コードのみが利用可能でした。これにより、以下のような制約がありました。

1行あたり1000バイト(改行を含む)を超える長い行の利用不可
US-ASCIIで表現できない文字(日本語、中国語など)の利用不可
バイナリデータ(画像音声など)の利用不可

MIMEは、これらの制約を克服するために、新しいヘッダを定義し、様々なデータタイプをUS-ASCII上で表現するための符号化方式を規定しました。

MIMEの主な特徴



マルチパートメッセージ: 1通のメールで複数のコンテンツを扱うことができます。
様々なデータタイプのサポート: テキスト、HTML、画像音声、動画など、様々な種類のデータを送信できます。
様々な符号化方式のサポート: US-ASCII以外の文字コードバイナリデータを扱うための符号化方式をサポートします。
HTTPへの応用: HTTPでのデータ伝送にもMIMEの枠組みが利用されています。

MIMEで導入された主なヘッダ



MIME-Version: MIMEのバージョンを示すヘッダです。現在、1.0のみが規定されています。


Mime-Version: 1.0


Content-Type: メッセージ中のデータの種類を指定するヘッダです。


Content-Type: type/subtype; parameter


`type`:データの種類の大分類(例:text, multipart, image)。
`subtype`:`type`をより詳細に分類したもの(例:text/plain, text/html, image/jpeg)。
`parameter`:追加情報(例:charset=UTF-8, boundary=XXXX)。

例:

`text/plain; charset=iso-2022-jp; format=flowed; delsp=yes` (ISO-2022-JPプレーンテキスト。RFC 3676 で規定される文字列折り返し処理を適用)
`text/html; charset=UTF-8` (UTF-8のHTMLテキスト)
`multipart/alternative` (同じ情報を異なる形式で表したマルチパート)

受信側では、`subtype`が不明な場合でも、`type`に応じて適切な処理を行うことができます。

`text`の場合:`text/plain`
`application`、`image`、`audio`、`video`の場合:`application/octet-stream`
`multipart`の場合:`multipart/mixed`

Content-Transfer-Encoding: データの符号化方式を指定するヘッダです。


Content-Transfer-Encoding: mechanism


`7bit`:デフォルト値。7ビットのテキストを表します。US-ASCIIISO-2022-JPなどが該当します。
`8bit`:8ビットのテキストを表します。SMTPでは利用できません。ESMTPの8BITMIMEを利用するか、別のプロトコルが必要になります。
`binary`:バイナリデータを表します。SMTPでは利用できません。ESMTPのBINARYMIMEを利用するか、別のプロトコルが必要になります。
`quoted-printable`:US-ASCIIに存在しない文字を`=HH`のような形式で符号化します。HHは文字コードを16進数で表します。ヨーロッパ系の言語で多く使われます。
`base64`:3オクテット(24ビット)を6ビットずつ分割し、それぞれをUS-ASCIIの64文字で表現します。バイナリデータの送受信によく使われますが、データ容量は約33%増加します。

ヘッダでの非US-ASCII文字の扱い



MIMEでは、ヘッダ部でも非US-ASCII文字が使用できるように、以下の形式を定義しています。


=?charset?encoding?encoded-text?=


`charset`:文字コード系(例:ISO-2022-JP, UTF-8)。`Content-Type`の`charset`パラメータと同じです。
`encoding`:符号化方法 (`Q` or `B`)。`Q`はquoted-printableに似た方法、`B`はbase64を表します。
`encoded-text`:符号化された文字列。

しかし、一部のメールソフトでは、この形式の解釈に誤りがある場合があり、注意が必要です。

RFC 2231では、MIMEパラメータの値に非US-ASCII文字を指定する方法を規定しています。

関連項目



拡張子
電子メール
SMTP (Simple Mail Transfer Protocol)
MHTML (MIME Encapsulation of Aggregate HTML Documents)
S/MIME (Secure / Multipurpose Internet Mail Extensions)

MIMEは、インターネットメールをより柔軟で多機能にするために不可欠な規格です。これにより、テキストだけでなく、画像音声などの様々なデータをメールで共有できるようになりました。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。