マルチパーパス・インターネット・メール・エクステンション (MIME) プロトコル
マルチパーパス・インターネット・メール・エクステンション (MIME) は、メール形式を拡張して次の機能をサポートするインターネット標準です:
- US-ASCII 以外の文字セットのテキスト;
- 非テキスト添付ファイル;
- マルチパートメッセージ本文;および
- 非 ASCII 文字セットのヘッダー情報。
SMTP は 7 ビットの ASCII 文字のみをサポートしており、実質的に限られた言語しか扱えません。ラテン文字ベースの言語は SMTP で問題なく使用できますが、その他の言語はメールが配信される際に正しく表示されません。一方、MIME は SMTP の ASCII 文字サポートを拡張し、他の文字セット、画像、音声を使用したメールの送信・表示が可能です。一般に、すべてのメールクライアントと SMTP サーバーは MIME 形式のメッセージを正しく処理します。
MIME ヘッダーの理解
MIME ヘッダーにはプロトコルに関する情報が含まれます。
MIME バージョン
これはメッセージが MIME 形式であることを示します。次のように表示されます:
MIME-Version: 1.0
コンテンツタイプ
これはメッセージのコンテンツタイプを示し、タイプとサブタイプのペアで表されます(例: text/plain、text/html)。multipart コンテンツタイプは、テキスト、HTML、添付ファイル、画像、音声、動画などを含むことができます。
Content-Type: multipart
コンテンツ転送エンコーディング
Content-Type で指定されたエンコーディングの上に、バイナリからテキストへのエンコーディング方式が使用されているかどうかを示します。使用されている場合はその方式を示します。ここでは 7-bit、8-bit、binary のコーディングタイプを指定できます。
エンコード語
SMTP メッセージのヘッダーは通常 ASCII 文字を使用します。非 ASCII 文字はリテラル文字列の代わりに MIME エンコード語法を使用する必要があります。形式は次のとおりです:
"=? charset ? encoding ? encoded text ?="。
マルチパート メッセージ
MIME マルチパートメッセージは、Content-Type ヘッダーに境界線(boundary)を含みます。この境界線は、どのパートにも出現してはならず、パート間およびメッセージ本文の開始と終了に配置されます。例:
MIME バージョン: 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
各パートはそれぞれのコンテンツヘッダーと本文で構成されます。
マルチパート サブタイプ
MIME 標準はさまざまな multipart メッセージのサブタイプを定義しています。サブタイプは全体メッセージの "Content-Type" ヘッダーで指定されます。
以下は、最も一般的に使用されるサブタイプの一覧です。
- Mixed:Multipart/mixed は、異なる "Content-Type" ヘッダーを持つファイルをインラインで送信する際に使用されます。画像や他の簡単に表示できるファイルを送信すると、ほとんどのメールクライアントはそれらをインラインで表示します。
- Message:メッセージパートは電子メールメッセージを含みます。
- Digest:Digest は複数のテキストメッセージを送信するシンプルな方法です。各パートのデフォルトの Content-Type は "message/rfc822" です。
- Alternative:Alternative サブタイプは、各パートが同一(または類似)内容の「代替」バージョンであり、異なるフォーマットはそれぞれの "Content-Type" ヘッダーで示されることを示します。
最も一般的に使用される multipart/alternative は、プレーンテキスト (text/plain) と HTML (text/html) の 2 部構成のメールに使用されます。プレーンテキスト部分は下位互換性を提供し、HTML 部分は書式設定やハイパーリンクの使用を可能にします。多くのメールクライアントはプレーンテキストを HTML より優先するオプションを提供しています。これは、ローカル環境の要因がアプリケーションの「最適」なメッセージ部分の選択に影響を与える例です。