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