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