著者: Kartic Krishnamurthy 翻訳者: limodou
「それでは、MIME に準拠した情報をどのように作成するのですか?」
上記の一般的な説明を踏まえて、いわゆる MIME 情報が何であるかを見てみましょう!
最も単純なMIMEメッセージ
このメッセージにはセグメント、つまり添付ファイルがありません。ただし、これは MIME メッセージであるため、必要なヘッダーが必要です。
差出人: php(現在の主流の開発言語として)@php(現在の主流の開発言語として).net
宛先: Alex (the Great)
MIME-Version: 1.0
Hello Alexander,
Hows Bucepolus doing?
ここには何もなく、MIME ヘッダーが付いた単純な RFC-822 準拠のメッセージ (テキスト メール) です。 Content-Type ヘッダーが指定されていない場合は、Content-Type: text/plain;charset=us-ascii であると想定されることに注意してください。 もちろん、これは多少単純で複雑です
いくつかは次のとおりです。 : Alex (the Great)
宛先: php
(現在の主流の開発言語として)
@php
(現在の主流の開発言語として)
.net
件名: ブセファロス MIME -バージョン: 1.0 Content-Type: image/jpg; name=buce.jpg Content-Transfer-Encoding: Base64
Content-Description: 彼を見てください
<....base64 でエンコードされた jpg 画像..>
「こんにちは。でも、同じメールで子犬の写真を送りたいのですが…!」 true
の場合、上記の例は単純すぎるため、愛好家と現代の電子メール処理ニーズの両方をサポートするのに十分なコンテンツがありません。実際、
多くの電子メール クライアントでは説明フィールドさえ表示できません。
これが私たちが直面している「多部情報」です。
マルチパートメッセージ
この概念により、1 つのメールで複数のアイテムを送信できます。たとえば、Alexander が自分の馬の写真を含む電子メールを php
(現在の主流の開発言語として)
@php
(現在の主流の開発言語として)
.net に送信したいとします。素晴らしい説明です!このような単純な要件は、マルチパート メッセージの概念なしでは満たすことができません。この場合、
受信者が写真、家族図、素晴らしい説明を取得できるように、Content-Type ヘッダーを使用して電子メールのさまざまな部分をサポートするラッパーを作成しました。 Content-Type ヘッダーの値は「multipart」になり、これは完全な電子メール メッセージであり、このヘッダーは メッセージのみをカプセル化することを示します。また、「混合」サブタイプもあります (結局のところ、写真、家系図、および 7 ビットのテキスト情報は異なるタイプですよね?)。
全体像を見てみましょう:
From: Alex (the Great)
To: php
(現在の主流の開発言語として)
@php
( do
.net
件名: re: ブセファロス
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="XX-1234DED00099A"; Content-Transfer-Encoding: 7bit これは MIME エンコードされたメッセージです
--XX-1234DED00099A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
こんにちは php
(現在の主流の開発言語として)
、
を添付します。私の馬、ブセファロスの血統表と写真。 : 「ブセファロスの写真」
<....base64 jpg>
--XX-1234DED00099A Content-Type: application/octet-stream;
name="pedigree. doc"
Content-Transfer-Encoding: Base64
Content-Description: "偉大な馬の血統表"
<....base64 でエンコードされたブセファロスのドキュメント (pedigree.doc) ...>
-- XX-1234DED00099A--
ほら、複雑そうじゃないですか。とにかく、詳細を見てみましょう:
MIME ヘッダーの Content-Transfer-Encoding が「7bit」であることに気づいた場合。 Content-Type は
multipart/mixed であるため、エンコーディングは 7 ビット、8 ビット、またはバイナリのいずれかである必要があります。7 ビットは広く使用されている形式です。
このようなメッセージにはさまざまな情報が含まれています。クライアント プログラムは、JPG 画像、ドキュメント、通常のテキストの違いをどのようにして認識するのでしょうか? Content-Type の後に、boundary="XX-1234DED00099A" パラメーターがあることがわかります。この値は、メールのさまざまな
部分を区切るために使用されます。これは MIME 境界タグと呼ばれます。メッセージ範囲を超えた場合の混乱を避けるために、境界タグの値はできる限り一意である必要があります。