解決策
初期のインターネットメールはASCIIのみだったため、メッセージ本文は、すべてのクライアントが同意する形で画像やファイルを運ぶことができなかった。MIME(Multipurpose Internet Mail Extensions)はそれを変えるために考案された。
MIMEはカーネギーメロン大学のAndrew Messaging Systemからクロスプラットフォームのデータ形式として生まれ、共同考案者のNathaniel Borensteinらによって1992年6月にRFC 1341として最初に仕様化された。現在の版は1996年のRFC 2045/2046/2047のセットである。
その設計は意図的に小さかった。Content-Typeヘッダーはそのパートが何であるかを示し、Content-Transfer-EncodingはバイナリをASCIIに変換し、マルチパート境界は1つの本文に多数のパートを含めることを可能にする。メッセージは従来どおりSMTPで送られる。
拡張がヘッダーベースで任意だったため、各クライアントは独自のスケジュールでサポートを追加でき、MIMEはすぐに添付ファイルやリッチテキストメールを送る標準的な方法となり、後にウェブ自身のcontent-typeの考え方の基礎ともなった。
達成したこと
本文が何であるかを示すヘッダーを追加する
うまくいった理由
content-typeヘッダーは受信者にそのパートが何であるかを伝えるため、規則に従ってデコードできる
base64により任意のバイナリがASCIIのみの転送を通過できる
マルチパート境界により1つのメッセージでテキストと添付ファイルを一緒に保持できる
変更がヘッダーレベルだったため、導入には共通の一斉切り替えを必要としなかった
応用できること
広く展開されたシステムを拡張するには、新しいシステムではなく、小さく任意の構造を追加する。ペイロードが何であるかを示すヘッダーがあれば、各実装者が独自に採用できる。
その後
MIMEはメール添付ファイルの普遍的なコンテナとなり、Content-Typeヘッダーがウェブリソースを記述するためにその考え方を借用した理由でもある。元の仕様はプレゼンテーションについて薄かったため、Content-DispositionがRFC 2183で追加された。実際には、多くのクライアントは標準の助言ではなく独自のロジックで表示するパートを選んでいる。
出典をたどる
出典
- Multipurpose Internet Mail Extensions (MIME) Part One (RFC 2045) IETF / rfc-editor.org · rfc-editor.org
- MIME — Wikipedia Wikipedia · en.wikipedia.org