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