共用方式為


MAPI 屬性類型概觀

適用於:Outlook 2013 |Outlook 2016

屬性類型是MAPI在MAPIDEFS中定義的常數。H 頭檔,指出屬性值的基礎數據類型。 所有屬性,無論是由 MAPI、用戶端應用程式或服務提供者所定義,都會使用下列其中一種類型。

屬性類型遵循與用於屬性標記的類似命名慣例。 許多屬性類型都有單一值和多重值版本。 單一值屬性包含其類型的一個值,例如單一整數或字元字串。 用來代表單一值屬性的常數有兩個部分:前置詞PT_和描述實際類型的字串,例如LONG或 STRING8。

多重值屬性包含一個以上的類型值。 不同於 OLE 變異陣列,多重值屬性中的每個值都是相同的類型。 用來表示多重值屬性的常數是藉由結合MV_FLAG旗標與代表基底類型的對應單一值常數所建立。 有三個部分:前置詞PT_後面接著MV_後面接著描述類型的字串。 例如,包含多個整數之屬性的類型是PT_MV_LONG,而且會PT_MV_STRING8多個字元字串的類型。

下圖顯示描述多重值整數的 SPropValue 結構,這是類型為 PT_MV_LONG 的屬性。 Value 成員會展開以包含 屬性中整數值的計數,以及這些值陣列的指標。

Multiple-value properties

多重值屬性

雖然支援多重值屬性是選擇性的,但MAPI建議客戶端和服務提供者支援這兩種類型的屬性,因為這樣做可在符合MAPI規範的元件之間進行更大的互動。

下圖列出所有不同的屬性類型常數,顯示它們儲存在 SPropValue 結構中的位置。 Value 成員的大小取決於特定類型。 請注意,並非所有單一值型別都有多個值對等專案。

Property type constants

屬性類型常數

使用 屬性的用戶端和服務提供者必須遵循兩個步驟:

  1. 判斷屬性是否可用或無法使用。

  2. 如果有的話,請擷取屬性的值。

有時候客戶端或服務提供者只需要檢查屬性是否存在;其他時候,您必須檢查特定值。 例如,傳輸提供者有三種不同的動作課程可處理 PidTagSendRichInfo) 屬性 (PR_SEND_RICH_INFO,這是一個布爾值,指出是否應該以格式化文字傳輸訊息。 如果 PR_SEND_RICH_INFO 設為TRUE,傳輸提供者會傳輸格式化的文字。 如果設定為 FALSE,則會在傳輸之前捨棄格式化的文字。 如果 PR_SEND_RICH_INFO 無法使用,傳輸提供者會遵循其預設的動作,不論特定提供者為何。

MAPI 會定義特殊屬性類型,PT_UNSPECIFIED,當屬性類型未知時,用戶端或服務提供者可用來擷取屬性。若要在未事先瞭解其類型的情況下擷取屬性,用戶端或服務提供者會呼叫物件的 IMAPIProp::GetProps 方法,並傳遞由屬性識別符和PT_UNSPECIFIED屬性類型所組成的屬性標記。 GetProps 會傳回 屬性的 SPropValue 結構,並將PT_UNSPECIFIED取代為適當的類型。 需要實作 GetProps 的服務提供者才能支援PT_UNSPECIFIED。

某些MAPI物件支援本身為物件的屬性。 物件屬性具有類型PT_OBJECT。 用戶端和服務提供者通常會使用 IMAPIProp::OpenProperty 方法、指定適當的存取介面,或支援 屬性之物件上的方法,而不是使用 IMAPIProp::GetProps 來存取這些屬性。

因為存取物件屬性的值牽涉到使用物件的其中一個介面, 所以 GetProps 不適當。 使用 GetProps 時,呼叫端會透過 SPropValue 結構存取屬性的值。 使用 IMAPIProp::OpenProperty 時,呼叫端會擷取可存取物件之介面的指標。 OpenProperty 一律可用來擷取對象屬性。 在物件上呼叫方法的另一個選項無法與每個物件屬性搭配使用。

例如,每個資料夾都支援兩個數據表:階層數據表和內容數據表。 這些數據表是資料夾的屬性;其屬性標記 PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy) 和 PR_CONTAINER_CONTENTS (PidTagContainerContents) 。 數據表是需要 IMAPITable 介面來存取的物件。 用戶端可以呼叫資料夾的 IMAPIContainer::GetHierarchyTable 方法來存取階層數據表、呼叫資料夾的 IMAPIContainer::GetContentsTable 方法來存取內容數據表,或呼叫資料夾的 IMAPIProp::OpenProperty 方法來存取任一數據表。 若要呼叫 OpenProperty,用戶端會將 屬性的屬性標記傳遞為第一個參數,並傳遞介面標識符,以供存取做為第二個參數。 這些參數會 PR_CONTAINER_HIERARCHYPR_CONTAINER_CONTENTSIID_IMAPITable

如需單一值和多重值屬性類型的完整清單,請參閱 屬性類型

另請參閱