技術解説 · 出典付きの回答

MIME(Multipurpose Internet Mail Extensions)とは?

MIMEはMultipurpose Internet Mail Extensionsの略です。元のSMTP(Simple Mail Transfer Protocol)を拡張する標準で、画像、音声、動画、アプリケーションデータなどのテキスト以外のコンテンツや、HTMLなどのリッチテキスト形式をやり取りできるようにします。

MIMEの仕組み

MIMEは、メールメッセージに特定のヘッダーを追加し、本文の扱い方を受信側のメールクライアントに伝えることで機能します。最も重要なヘッダーはContent-Typeで、データのメディアタイプを定義します。たとえば、text/plainは単純なテキストを、text/htmlは整形されたWebページを示します。1通のメールで複数の種類のコンテンツを送る場合は、multipart/mixedまたはmultipart/alternativeのタイプを使って各セクションをまとめます。

送信者にとっての重要性

MIMEは、現代のメールの到達率とユーザー体験に欠かせません。MIMEがなければ、メールは7ビットのASCII文字に限られ、多言語対応は不可能になり、添付ファイルも使えません。MIMEを使えば、送信者はHTML版と併せてフォールバック用のプレーンテキスト版を提供でき、受信者のメールクライアントの機能にかかわらずメッセージを読めるようにできます。

運用上の注意とよくある間違い

よくある失敗は、Content-Typeヘッダーで正しいcharsetを設定していないことで、文字化けの原因になります。また、マルチパートメッセージでboundaryの定義が誤っていると、メールが生のコードのまま表示されたり、添付ファイルが欠落したりすることがあります。開発者は、SMTPリレーを経由する間にデータが破損しないよう、バイナリデータをBase64で適切にエンコードしてください。

具体例

添付ファイル付きのHTMLメールの一般的なMIMEヘッダーは、Content-Type: multipart/mixed; boundary=boundary_123 のようになります。本文の中では、最初のパートがメッセージ本文として Content-Type: text/html; charset=UTF-8 と指定され、2番目のパートがファイルとして Content-Type: application/pdf; name=invoice.pdf と指定されます。SendHQやその無料ツール(https://sendhq.cc/tools)を使えば、ヘッダーの構造を分析できます。

エンコーディングの仕組み

SMTPはテキスト向けに設計されているため、MIMEはエンコーディング方式を使ってバイナリデータを転送します。最も一般的なのはBase64で、バイナリファイルをASCII文字の文字列に変換します。Quoted-Printableエンコーディングは、ほとんどがASCIIでASCII以外の文字を少しだけ含むテキストに使われ、古いメールシステムとの互換性を保ちつつ、Base64よりもオーバーヘッドを抑えられます。

よく寄せられる質問

MIMEはSMTPと同じものですか?

いいえ。SMTPはメールをあるサーバーから別のサーバーへ転送するためのプロトコルで、MIMEは転送されるコンテンツの形式を定義する標準です。

multipart/alternativeのMIMEタイプとは何ですか?

プレーンテキストとHTMLのように、同じコンテンツを複数の形式で送る場合に使われます。メールクライアントは表示に最適なバージョンを選べます。

MIMEでBase64が使われるのはなぜですか?

Base64はバイナリデータをASCIIテキストにエンコードするため、7ビットのテキストしかサポートしないメールサーバーを経由してもデータが損なわれません。

MIMEはメール以外の用途にも使えますか?

はい。MIMEタイプの仕組み(現在はメディアタイプと呼ばれます)はWeb全体で使われており、HTTPヘッダーでダウンロードやアップロードされるファイルの種類を示すのにも利用されています。

一次情報源