MIME 訊息由資料和 meta 資料組成。 MIME meta 資料由 HTTP 樣式標頭和 MIME 界限定界字元組成。

MIME 標頭

每一個標頭都是一行以冒號區隔的名稱/值配對。 ASCII 序列 <CR><LF> 會終止行。 這些標頭的序列 (稱為標頭區塊) 以空白行終止: <CR><LF><CR><LF> 。 此 HTTP 樣式的任何標頭都可以出現在 MIME 文件中。 部分一般 MIME 標頭在 MIME 標準標頭欄位 中說明。

內容類型

唯一必須呈現的標頭是 Content-Type 標頭。 此標頭指定訊息中資料的類型。 如果內容類型值以 multipart 開頭,則訊息是多組件 MIME 訊息。 對於多組件訊息, Content-Type 標頭還必須包含一個界限屬性,以提供用來定界訊息組件的文字。 每一個 MIME 組件都有自己的內容類型欄位,用來指定組件中的資料類型。 這也可以是多組件,容許多組件訊息形成巢狀。 具有任何其他內容類型值的 MIME 組件會作為 BLOB 資料來處理。

如果透過 HTTP 傳送 MIME 文件,則內容類型標頭會出現在 HTTP 標頭區塊中,而不是 MIME 訊息內文中。 因此,整合節點會將 Content-Type 標頭的值管理為邏輯樹狀結構 Properties 資料夾中的 ContentType 內容。 這可讓 MIME 剖析器取得透過 HTTP 接收之 MIME 文件的內容類型值。 如果您需要建立新的 MIME 樹狀結構或修改 Content-Type 的值,請使用 MIME 網域中的 ContentType 內容來設定 Content-Type 值。 如果您直接在 MIME 樹狀結構或 HTTP 樹狀結構中設定 Content-Type 值,則可能會忽略或不一致地使用此值。 下列 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 ,則內容類型必須出現在 MIME 訊息的起始標頭區塊中。
    • 內容類型值是媒體類型,後面接著 / 字元及子類型。 例如 text/xml multipart/related 。 剖析器不會驗證子類型。 內容類型值後面可以接著一或多個以分號區隔的參數。
    • 如果訊息的媒體類型是多組件,則界限屬性必須提供用來定界個別 MIME 組件的文字。
    • 每一個個別 MIME 組件都可以有自己的內容類型標頭。 組件標頭可以具有多組件的媒體類型,以便多組件訊息可以巢狀化。 在此情況下,必須提供有效的界限屬性,且其值必須不同於先前在訊息中定義的任何值。 具有任何其他內容類型值的 MIME 組件會處理為 BLOB 資料。
    • MIME 多組件界限定界字元以 7 位元 ASCII 表示。 界限定界字元包含以連字號配對開頭的一行,後面接著界限字串。 此順序不得在 MIME 訊息內的任何點發生,但不能作為界限。 MIME 結尾-定界字元是連字號配對,後面接著 MIME 界限字串,後面接著另一個連字號配對。 所有定界字元行必須以 ASCII 順序 <CR><LF> 結尾。 定界訊息的範例如下:
      --MIME_boundary
      message data
      --MIME_boundary
      message data
      --MIME_boundary--
      其中 MIME_boundary 是界限定界字元字串,而 訊息資料 代表訊息資料。
    • MIME 媒體類型 message 不受支援,在執行時期會導致錯誤。
    • 任何前言資料 (起始 MIME 標頭區塊與第一個界限定界字元之間的文字) 或結尾資料 (最終界限定界字元之後的文字) 作為僅值元素儲存在邏輯樹狀結構中。 前言資料和結尾資料只能分別顯示為 Parts 節點的第一個子項和最後子項。
    • MIME 剖析器不支援隨需應變剖析,並忽略 剖析計時 內容。 剖析器不會針對訊息模型驗證 MIME 訊息,並忽略 IBM® Integration Toolkit Validate 內容。
    • 多組件 MIME 的特殊案例

      MIME 剖析器主要用於多組件 MIME 訊息。 不過,剖析器也會處理一些特殊情況:
      • 多組件 MIME 只有一個組件。 MIME 組件的邏輯樹狀結構會照常儲存內容類型及其他資訊,但附件的「資料」元素是空的。
      • 單一部分 MIME。 對於單組件 MIME ,邏輯樹狀結構沒有「組件」子項。 MIME 樹狀結構的最後一個子項是「資料」元素。 「資料」元素是包含訊息資料之 BLOB 的母項。
      • 不含內容的 MIME 組件。