共用方式為


MAPI 數據表

適用於:Outlook 2013 |Outlook 2016

MAPI 資料表是 MAPI 物件,用來檢視屬於特定類型之其他 MAPI 對象的屬性集合。 MAPI 資料表會以數據列和數據行格式結構化,每個數據列代表物件,而每個數據行代表 對象的屬性。 每個數據列中通常包含的其中一個屬性是 PR_ENTRYID (PidTagEntryId) 屬性,這是可用來開啟和修改對象的標識碼。

因為數據列包含屬性值,所以從數據表擷取數據列類似於直接從數據列所代表的物件取得一組屬性。 這兩項作業都會擷取屬性值陣列。 主要差異在於處理長字串和二進位屬性。 為了包含在數據表中,某些數據表實作器會將這些屬性截斷為 255 個字節。 直接從 物件擷取時,一律可以使用完整值。

數據表是由通訊簿和訊息存放區提供者以及MAPI實作,視數據表及其內的物件類型而定。 訊息存放區提供者會針對每個資料夾實作資料夾和內容資料表,其中包含資料夾中訊息的相關信息。 通訊錄提供者會實作通訊簿容器,以及顯示其組織的階層數據表。 MAPI 會實作數個不同的數據表,有些供用戶端應用程式使用,有些供服務提供者使用,有些則供兩者使用。 狀態數據表在 MAPI 最終提供數據表時是唯一的,但除了 MAPI 之外,數據列是由所有服務提供者類型的貢獻所組成。

下圖顯示MAPI中表格的其中一個常見用法:顯示資料夾的內容。 右側顯示兩則訊息,就像出現在一般訊息用戶端應用程式中一樣。 顯示器包含關於每則郵件的四項資訊:寄件者、收件者、主旨和消息正文。 每個資訊片段都會對應至訊息的屬性。

左側是包含這兩個訊息的內容數據表檢視。 雖然內容數據表可能有十個數據列,因為資料夾有十個訊息,且每個數據列包含三個以上的數據行,這個特定檢視僅限兩列和三個數據行。

下表顯示構成數據表檢視之數據行集的屬性。

屬性 描述
PR_SENDER_NAME (PidTagSenderName)
寄件者名稱
PR_ORIGINAL_DELIVERY_TIME (PidTagOriginalDeliveryTime)
訊息傳送的日期和時間
PR_SUBJECT (PidTagSubject)
訊息主旨行

請注意,訊息中顯示的屬性集與數據表中顯示的數據行集不同。 數據表的實作者,在此案例中是訊息存放區提供者,會以預設順序提供一組預設的數據行。 用戶端可以修改此數據行集、要求其他數據行或拒絕預設數據行,並要求以特定方式排序。 用戶端也可以排序數據列,並根據一或多個數據行的值加以排序。

Using a table to display folder contents

使用資料表顯示資料夾內容

使用資料表有兩個介面:

  • IMAPITable:IUnknown 為客戶端和服務提供者提供數據表基礎數據的只讀檢視,讓他們只能檢視和變更簡報。 多個使用者可以使用 IMAPITable 同時存取相同的數據。 IMAPITable 是由MAPI和服務提供者實作。

  • ITableData:IUnknown 可讓客戶端和服務提供者讀取/寫入數據表的基礎數據,讓他們進行永久變更。 IMAPITable 是由 MAPI 實作,主要供透過呼叫 CreateTable 函式來存取它的服務提供者使用。 ITableData 實作會保留數據表的所有數據,以及記憶體中任何相關聯的限制,使其不適合用於非常大型的數據表。 不支持複合限制和複雜作業,例如分類。

另請參閱