MIME メッセージ

MIME ヘッダー

MIME メッセージは、データとメタデータとの両方から構成されます。 MIME メタデータは、HTTP スタイルのヘッダーと MIME 境界区切り文字で構成されます。 各ヘッダーは、1 つの行にあるコロン区切りの名前値です。 この行は、ASCII シーケンス <CR><LF> で終了します。これらのヘッダーのシーケンスはヘッダー・ブロックと呼ばれ、 ブランク行 <CR><LF><CR><LF> で終了します。この HTTP スタイルに続くヘッダーは、MIME ドキュメントに入れることができます。 いくつかの標準 MIME ヘッダーについて、MIME 標準ヘッダー・フィールドで説明されています。

Content-Type

MIME パーサーが存在を要求する唯一のヘッダーは、 Content-Type ヘッダーです。 このヘッダーは、メッセージ内のデータのタイプを指定します。 Content-Type 値が "multipart" で始まる場合、メッセージは複数パーツ MIME メッセージです。 複数パーツのメッセージでは、Content-Type にはメッセージ・パーツを区切るためのテキストを指定する 境界属性も含まれている必要があります。 それぞれの MIME パーツには、そのパーツ内のデータのタイプを指定する独自の Content-Type フィールドがあります。 ここにも複数パーツを指定して、複数パーツのメッセージをネストすることが可能です。 その他の Content-Type 値が指定された MIME パーツは、BLOB データとして扱われます。

MIME 文書が HTTP を介して送信される場合、Content-Type ヘッダーは MIME メッセージ本体 ではなく HTTP ヘッダー・ブロック内にあります。 そのためブローカーは、論理ツリーの Properties フォルダーで、 Content-Type ヘッダーの値を ContentType プロパティーとして管理します。 これにより、MIME パーサーは HTTP を介して受信した MIME 文書の Content-Type の値を取得できます。 新規の MIME ツリーを作成するか、または Content-Type の値を変更する必要がある場合、次のようにします。MIME ドメインの ContentType プロパティーを使用して、Content-Type 値を設定します。Content-Type 値を MIME ツリーまたは HTTP ツリーに直接設定すると、値が無視されるか、整合性を欠いて使用される結果をもたらすことがあります。 以下の ESQL は、ブローカー ContentType プロパティーを設定する方法を示しています。
SET OutputRoot.Properties.ContentType = 'text/plain';

構文解析

MIME ドメインは、完全な MIME 仕様を実施していません。 これにより、他のアプリケーションでは無効となるメッセージでも扱うことが可能になります。 例えば、MIME パーサーは MIME-Version ヘッダーを要求しません。 MIME パーサーは、以下の制約を課します。
  • MIME ヘッダーは適切にフォーマット設定されている必要があります。 これは以下のことを意味します。
    • 各ヘッダーは単独の行にあるコロン区切りの名前と値の対で、 ASCII シーケンス <CR><LF> で終了します。
    • ヘッダー行は、7 ビット ASCII を使用する必要があります。
    • セミコロンを使用して、次のようにパラメーターを分離します。
      Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml
    • ヘッダーには、以下の例のように、括弧で囲んでコメントを挿入できます。
      MIME-Version: 1.0 (Generated by XYZ)
  • 空白文字で始まる行は、前の行からの継続として扱われます。 これにより、長いヘッダーを複数の行に分割できます。
  • ヘッダー・ブロック内の複数のヘッダーが同じ名前である場合、それらの値は連結されてコンマ区切りリストになります。
  • トップレベルの MIME Content-Type ヘッダーが使用可能でなければなりません。 ヘッダーは大/小文字の区別を行いません。 トランスポートが HTTP の場合、HTTP ヘッダー内の Content-Type 値はトップレベルの Content-Type として使用されます。 トランスポートが HTTP ではない場合、Content-Type は MIME メッセージの初期ヘッダー・ブロック内に存在する必要があります。
  • Content-Type 値は、メディア・タイプとそれに続く / 文字およびサブタイプです。 例えば、text/xmlmultipart/related などです。 パーサーは、サブタイプの妥当性検査を行いません。 この値には、セミコロンで分離された 1 つ以上のパラメーターを続けることができます。
  • メッセージのメディア・タイプが複数パーツの場合、 境界属性で MIME パーツを区切るためのテキストを指定する必要があります。
  • それぞれの MIME パーツは、独自の Content-Type ヘッダーを持つことができます。 Part ヘッダーのメディア・タイプを複数パーツに指定して、複数パーツのメッセージをネストすることが可能です。 この場合、有効な境界属性を指定して、その値をメッセージ内で定義済みの他の値と異なるものにする必要があります。 その他の Content-Type 値が指定された MIME パーツは、BLOB データとして扱われます。
  • MIME 複数パーツの境界区切り文字は、7 ビット ASCII で表します。 境界区切り文字は、ハイフンの対、およびそれに続く境界ストリングの行から構成されます。 このシーケンスは、MIME メッセージ内で境界ではない場所に出現することはできません。 MIME 終了区切り文字は、ハイフンの対、およびそれに続く MIME 境界ストリング、およびそれに続くもう一つのハイフンの対です。 すべての区切り行は、ASCII シーケンス <CR><LF> で終了する必要があります。 区切り文字で区切られているメッセージの例を、以下に示します。
    --MIME_boundary
    message data
    --MIME_boundary
    message data
    --MIME_boundary--
    ここで、MIME_boundary は境界区切りストリングであり、 message data はメッセージ・データを表します。
  • MIME メディア・タイプの "message" はサポートされていないので、 実行時にエラーが生じます。
  • 序文データ (初期 MIME ヘッダー・ブロックと最初の境界区切り文字との間のテキスト)、 またはエピローグ・データ (最終境界区切り文字の後のテキスト) は、論理ツリー内に値のみのエレメントとして保管されます。 序文データおよびエピローグ・データは、それぞれ Parts ノードの最初および最後の子としてのみ出現できます。
  • MIME パーサーはオンデマンド (要求時) の構文解析をサポートしないため、「構文解析のタイミング」プロパティーを無視します。 パーサーは MIME メッセージをメッセージ・モデルに対して妥当性検査せず、 Message Brokers Toolkit 妥当性検査プロパティーは無視します。

複数パーツ MIME の特殊ケース

MIME パーサーは、主に複数パーツ MIME メッセージと共に使用することが意図されています。 ただし、このパーサーはいくつかの特殊ケースも扱います。
  • 1 つのパーツだけの複数パーツ MIME。 MIME パーツの論理ツリーは、Content-Type および他の情報を通常の方法で保管しますが、 添付のための Data エレメントは空になります。
  • 単一パーツの MIME。 単一パーツの MIME では、論理ツリーに Parts の子がありません。 MIME ツリーの最後の子は、Data エレメントです。 Data エレメントは、メッセージ・データを含む BLOB の親です。
  • 内容のない MIME パーツ。

セキュア MIME (S/MIME)

S/MIME は、セキュア E メールを送信するための規格です。 S/MIME は、外部レベル Content-Type が multipart/signed であり、 パラメーターとして protocol とメッセージの暗号化に使用されるアルゴリズムを 定義する micalg とがあります。 1 つ以上の MIME パーツは、エンコードされた内容を持つことが可能です。 これらのパーツには、application/pkcs7-signature などの Content-Type、 および base64 の Content-Transfer-Encoding があります。 MIME ドメインは、メッセージに実際に署名が付されているかどうかの解釈または検証を試行することはありません。

関連概念
MIME ツリーの詳細
論理ツリー構造
メッセージのモデル化の概念
関連タスク
メッセージ本体の内容の操作
関連資料
MIME 標準ヘッダー・フィールド
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac30080_