MIMEは、インターネットの電子メールで多様なデータを扱うための規格。RFC2045~2049で規定されている。MIMEを利用することで、非英語圏のテキストや添付ファイルをメールで表現できる。

 MIMEが定められたのは、インターネットメールに規格(RFC5322)上の制約があるためだ。メッセージに使える文字が7ビットのASCIIコードに限定されている。このため、8ビットで表現する必要がある日本語などの文字列は、そのままでは送受信できない。またバイナリー形式の添付ファイルを表現する仕組みもない。

 RFC5322との互換性を保ちつつ、こうした課題を解消するため、MIMEは大きく3つの機能を備えている。(1)データ領域を分割する、(2)データの種類を通知する、(3)ASCIIコードで多様なデータを表現するエンコード(変換)方式の規定、である。これらを実現するため、MIMEでは多くの情報を「MIMEヘッダー」に記述する()。

図●電子メールにおけるMIMEヘッダーの役割
図●電子メールにおけるMIMEヘッダーの役割
[画像のクリックで拡大表示]

 分割したデータ領域ごとに、その属性をMIMEヘッダーに定義する。MIME形式のデータの場合、必ず最初にMIMEヘッダーが存在する。ここで(1)のための区切りとなる境界文字列を定義している。

 そして分割した各ブロックの先頭にも、必ずMIMEヘッダーを入れる。各ブロックのMIMEヘッダーは、そのブロックのデータがどのような属性かを識別する情報を記述する。これが(2)だ。具体的には、そのブロックで使用しているエンコード方式や、ファイル名、データの種類などである。例えば日本語のブロックはMIMEヘッダーで「日本語の文字セットを使い、データはASCIIコード」などと指定する。添付ファイルであれば、呼び出すアプリケーション名やエンコード方式、ファイル名などが指定の対象となる。

 (3)のエンコード方式は、「Base64」と「quoted-printable」の2種類が定められている。どちらもASCIIコードしか想定していないメールサーバーやネットワークでも経由できるようにするために定められた。一般に添付ファイルなどバイナリー形式のデータはBase64でエンコードする。quoted-printableはドイツ語やフランス語など欧州のアルファベットを拡張した文字列体系に合わせたもの。アルファベットはASCIIコードをそのまま使い、非ASCIIコードが登場したら、マークを付けて16進数で表現する仕組みだ。