共用方式為


使用 POP3 配接器處理多部分訊息

POP3 配接器可以處理符合RFC 2045、RFC 2046RFC 2047中所述之IETF 標準的 MIME 編碼訊息。 MIME 編碼訊息可以有一或多個內容類型不同的部分。 本主題將討論 POP3 配接器如何處理多部分 MIME 編碼訊息。

使用 POP3 配接器接收多部分訊息

如果使用 POP3 配接器的接收位置已將 [套用 MIME 譯 碼] 選項設定為 True ,則 POP3 配接器會在接收 MIME 編碼的訊息時執行下列動作:

  1. 從收到的 MIME 編碼訊息部分建立多部分 BizTalk 訊息。 這個多部分訊息可能包含一或多個部分,包含的部分數目會與所收到 MIME 編碼訊息的部分數目相同。

  2. 掃描 MIME 編碼訊息的標頭。 如果有任何標頭符合 POP3 配接器屬性架構和屬性 主題中記載的屬性清單,這些標頭就會升級為多部分 BizTalk 訊息做為內容屬性。

  3. 使用可設定的演算法,將 MIME 編碼訊息的其中一個部分指定為 BizTalk 訊息內文部分。 用來判斷哪些訊息部分將會是 BizTalk 訊息本文部分的演算法,如下文 中 POP3 配接器所使用的本文元件選取演算法一節所述。

  4. 將多部分 BizTalk 訊息發佈至 MessageBox。

POP3 配接器使用的內文部分選取演算法

當 POP3 配接器從所收到 MIME 編碼訊息的部分建立多部分 BizTalk 訊息時,它會選取其中一個訊息部分做為 BizTalk 訊息內文部分。 BizTalk Server 會使用 BizTalk 訊息內文部分來執行訊息驗證、對應、屬性升級、一般檔案組合以及其他作業。 多部分 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 訊息內文部分的部分會成為發佈至 MessageBox 之多部分 BizTalk 訊息的第一個部分,訊息的其餘部分則保留當初在原始 MIME 編碼訊息中的順序。

在協調流程中處理多部分訊息

當 POP3 配接器從接收的 MIME 編碼訊息建立多部分 BizTalk 訊息時,所有部分都會發佈至 MessageBox 資料庫,即使其中只有一個部分會指定為 BizTalk 訊息內文部分也一樣。 這些部分接著會由訂閱多部分訊息的協調流程使用。 本節將說明在協調流程中處理多部分訊息的一些考量。

處理部分數目已知且部分類型已知的多部分訊息

如果協調流程接收的多部分訊息是已知部分數目且已知部分類型,則您可以在協調流程中宣告多部分訊息,然後在設計階段設定部分數目和部分類型。

處理部分類型未知的多部分訊息

如果您的協調流程收到具有未知元件類型的多部分訊息,您可以在協調流程中宣告多部分訊息,並針對類型未知的每個元件使用 XmlDocument 類型。

處理部分數目未知且所有部分類型都未知的多部分訊息

如果您的協調流程收到具有未知部分數目的多部分訊息,則可以在協調流程中宣告具有 XmlDocument 類型單一部分的多部分訊息,以接收訊息。 如果收到包含大於已宣告元件數目的多重元件訊息,協調流程引擎會讀取訊息中有多少部分,然後針對符合已宣告訊息類型中元件數目的元件建構適當的元件類型,然後建構其餘部分的 XmlDocument 元件。