MIME(Multipurpose Internet Mail Extensions)
MIME が開発される以前、UUENCODE や Base64 などの符号化が一般的になる前は、電子メールでやり取りできるデータはUS-ASCIIにかぎられていました。しかし、テキスト以外のデータも存在し、画像、アプリケーションのデータ、動画など様々なデータを送受する必要も出てきました。そこで、旧来からの仕組みをほとんど変えることなく、さまざまなデータをやり取りするための MIME が開発されました。
MIMEの規格は RFC1521 と RFC1522 に文書化され、最新は RFC2045~RFC2049 に文書化されています。
MIMEの主な特徴
- Base64 などの符号化を標準にしてバイナリデータの転送を可能にする。それにより日本語などの 8ビットデータの送信が可能になった。
- いくつかのデータをまとめて添付でき、コンテンツをアプリケーションや言語と関連付けて格納できる。
MIME の設定のほとんどは、ヘッダ部分で行われ、メールを取り出すソフトはそれを解析して内容を表示します。
MIMEのフィールド
- MIME-Version
- MIME で使用されているバージョン番号を示します。現在の MIME バージョンは 1.0 になっています。
(例 : MIME-Version: 1.0) - Content-Type
- Content-Type フィールドには、このメールに添付されているデータの種類が指定されています。通常メールでは、 text/plain が指定され、プレーンテキスト形式であることがわかります。画像をデータとして添付されたメールでは image/gif や image/jpeg が指定され、処理すべきアプリケーションを判断することができます。
- Content-Description
- Content-Descriptionは、コメントなどが記述されるヘッダフィールドです。
- Content-Disposition
- Content-Dispositionは、ボディに含まれるファイルなどのデータの属性を指定します 。例えば、メッセージの本文(inline)と添付ファイル(attachment)の区別や、ファイルに保存する場合のデフォルトファイル名が記されます。
- Content-Transfer-Encoding
- Content-Transfer-Encoding フィールドは、MIMEエンティティのボディがどのようにエンコードされているかを示します。
マルチパート
複数添付する場合、マルチパートメディアタイプというものをに利用します。1つのパートは、「バウンダリ」と呼ばれる任意の文字列で区切られ、Content-Typeのboundaryパラメータで、あらかじめヘッダに示されます。マルチパートのサブタイプは、次のようなものがあります。
- multipart/mixed
- 個々のパートはそれぞれ別のデータを示します。メッセージを受け取った側では、任意の順番でデータを取り出すことができます。
- multipart/alternative
- 含まれるメッセージのすべてのパートが同じ内容であることを示します。例えば、同じ内容のテキストとHTMが含まれる場合などに使用される。
- multipart/parallel
- 含まれるパートを複合して同時に表示させる必要があることを示します。
- multipart/digest
- 主にニュースやメール・メッセージを複数含めることを目的としています。
バウンダリーの例
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_003E_01C5A7F5.E54B9890"
//バウンダリ
------=_NextPart_000_003E_01C5A7F5.E54B9890