POP3 アダプタでのマルチパート メッセージの処理

POP3 アダプターは、RFC 2045、RFC 2046、RFC 2047 に記載されている IETF 標準に準拠した MIME エンコードメッセージ処理できます。 MIME エンコード メッセージは、コンテンツの種類が異なる 1 つ以上の部分を含めることができます。 このトピックでは、POP3 アダプタがマルチパートの MIME エンコード メッセージを処理する方法について説明します。

POP3 アダプタでのマルチパート メッセージの受信

POP3 アダプターを使用する受信場所に [ MIME デコードの適用 ] オプションが True に設定されている場合、POP3 アダプターは MIME でエンコードされたメッセージを受信するときに次のアクションを実行します。

  1. 受信した MIME エンコード メッセージの部分から、マルチパート BizTalk メッセージを作成します。 このマルチパート メッセージには、1 つ以上の部分を含めることができます。含まれる部分の数は、受信した MIME エンコード メッセージの部分の数と同じになります。

  2. MIME エンコード メッセージのヘッダーをスキャンします。 トピック「POP3 Adapter Property Schema」および「Properties」に記載されているプロパティの一覧に一致するヘッダーがある場合、これらのヘッダーはコンテキスト プロパティとしてマルチパート BizTalk メッセージに昇格されます。

  3. 構成可能なアルゴリズムを使用して、MIME エンコード メッセージの部分の 1 つを BizTalk メッセージのボディ部として指定します。 BizTalk メッセージ本文パーツとなるメッセージ パーツを決定するために使用されるアルゴリズムについては、「 POP3 アダプターで使用される本文パーツ選択アルゴリズム」セクションで説明します。

  4. マルチパート BizTalk メッセージをメッセージ ボックスに公開します。

POP3 アダプタで使用されるボディ部の選択アルゴリズム

POP3 アダプタは、受信した MIME エンコード メッセージの部分からマルチパート BizTalk メッセージを作成するときに、メッセージ部分の 1 つを、BizTalk メッセージのボディ部として選択します。 BizTalk メッセージのボディ部は、BizTalk Server でのメッセージ検証、マッピング、プロパティの昇格、フラット ファイル アセンブリなどの操作に使用されます。 マルチパート BizTalk メッセージのサブスクライバはすべてのメッセージ部分を受信しますが、マルチパート メッセージを理解できるオーケストレーション、カスタム パイプライン、またはアダプタを使用する場合を除いて、BizTalk メッセージの指定されたボディ部だけを処理します。 たとえば、マルチパート メッセージのすべての部分を読み取るようにオーケストレーションを構成できます。また、SMTP アダプタは、マルチパート メッセージのすべての部分を読み取ることができます。MIME/SMIME エンコーダ パイプライン コンポーネントを使用するようにカスタム パイプラインを構成することもできます。 オーケストレーションを使用してマルチパート メッセージを使用する方法の詳細については、以下の「 オーケストレーションでのマルチパート メッセージの処理」セクションを参照してください。

POP3 アダプターは、Body Part IndexBody Part Content Type に指定された値に基づいて、使用可能な本文パーツから BizTalk メッセージ本文パーツを選択します。

Note

POP3 アダプターは、 RFC 2046 で定義されている本文パーツ コンテンツ タイプを認識するように設計されています。

電子メールの BizTalk メッセージのボディ部を選択するために使用されるアルゴリズムを次に示します。

  1. 本文パーツ インデックスが 0 に設定されていて、本文パーツ コンテンツ タイプが空白の場合、BizTalk メッセージ本文パーツを選択するために次のアルゴリズムが使用されます。

    • Content-Description ヘッダーが "body" に設定されている、最初の MIME 部分を使用します。

    • それ以外の場合は、Content-Type ヘッダーが "text/xml" に設定されている、最初の MIME 部分を使用します。

    • それ以外の場合は、Content-Type ヘッダーが "text/plain" に設定されている、最初の MIME 部分を使用します。

    • それ以外の場合は、Content-Type ヘッダーが "text/" に設定されている、最初の MIME 部分を使用します。

    • それ以外の場合は、最初の MIME 部分を使用します。

  2. それ以外の場合、 本文パーツ インデックス が 0 に設定され、 本文パーツ コンテンツ タイプ が設定されている場合は、指定した 本文パーツ コンテンツ タイプ に一致する受信メッセージの最初の本文部分が BizTalk メッセージ本文パーツとして選択されます。 コンテンツの種類が一致する部分がない場合、メッセージは中断されます。

  3. それ以外の場合、 Body Part Index が 0 より大きい値に設定され、 Body Part Content Type が空白の場合、指定したインデックスを持つ本文パーツが BizTalk メッセージ本文パーツとして選択されます。 指定されたインデックスがボディ部の数より大きい場合、メッセージは中断されます。

  4. それ以外の場合、 Body Part Index が 0 より大きい値に設定され、 Body Part Content Type が設定されている場合、 Body Part Index は、指定した Body Part Content Type に一致するボディ パーツにのみ適用され、対応する本文パーツが BizTalk メッセージ本文パーツとして選択されます。 指定されたインデックスが、コンテンツの種類が一致する部分の数より大きい場合、メッセージは中断されます。 コンテンツの種類が一致する部分がない場合、メッセージは中断されます。

  5. BizTalk メッセージのボディ部として選択された部分が、メッセージ ボックスに公開されるマルチパート BizTalk メッセージの最初の部分になり、メッセージの残りの部分は、元の MIME エンコード メッセージ内での順序のまま維持されます。

オーケストレーションでのマルチパート メッセージの処理

POP3 アダプタが受信した MIME エンコード メッセージからマルチパート BizTalk メッセージを作成するときは、1 つの部分だけが BizTalk メッセージのボディ部として指定されていても、すべての部分がメッセージ ボックス データベースに公開されます。 その後、マルチパート メッセージをサブスクライブするオーケストレーションで、これらの部分を処理できます。 ここでは、オーケストレーションでマルチパート メッセージを処理する際の考慮事項について説明します。

部分の数と部分の種類が設定されているマルチパート メッセージの処理

オーケストレーションで部分の数と部分の種類が設定されているマルチパート メッセージを受信する場合は、オーケストレーション内でマルチパート メッセージを宣言し、部分の数と部分の種類をデザイン時に設定できます。

部分の種類が不明なマルチパート メッセージの処理

オーケストレーションが不明なパーツの種類のマルチパート メッセージを受信している場合は、オーケストレーションでマルチパート メッセージを宣言し、その型が不明な各パーツに対して XmlDocument 型を使用できます。

部分の数とすべての部分の種類が不明なマルチパート メッセージの処理

オーケストレーションが不明な部分数のマルチパート メッセージを受信している場合は、オーケストレーション内の XmlDocument 型の 1 つの部分でマルチパート メッセージを宣言して、メッセージを受信できます。 宣言されたパーツの数より大きいを含むマルチパート メッセージを受信した場合、オーケストレーション エンジンはメッセージ内のパーツの数を読み取り、宣言されたメッセージの種類のパーツ数に一致するパーツの適切なパーツの種類を構築し、残りの部分の XmlDocument パーツを構築します。