次の方法で共有


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 アダプタープロパティスキーマ」および「プロパティ 」に記載されているプロパティのリストと一致する場合、これらのヘッダーはコンテキストプロパティとしてマルチパート BizTalk メッセージに昇格されます。

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

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

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

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

POP3 アダプターは、ボディ パーツ インデックスと本文パーツ コンテンツ タイプに指定された値に基づいて、使用可能な 本文 パーツから BizTalk メッセージ 本文パーツを選択します。

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. それ以外の場合、 本文パーツ インデックス が 0 より大きい値に設定され、 本文パーツ コンテンツ タイプ が空白の場合、指定したインデックスを持つ本文パーツが BizTalk メッセージ本文パーツとして選択されます。 指定したインデックスが本文部分の数を超える場合、メッセージは中断されます。

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

  5. BizTalk メッセージ本文パーツとして選択されている部分は、メッセージ ボックスに発行されるマルチパート BizTalk メッセージの最初の部分になります。メッセージの残りの部分は、元の MIME でエンコードされたメッセージの順序を維持します。

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

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

既知の数の部品および既知の部品タイプでマルチパートメッセージを処理する

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

不明なパーツの種類を持つマルチパート メッセージの処理

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

部品数が不明で、すべての部品タイプが不明なマルチパートメッセージの処理

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