適用於:Outlook 2013 |Outlook 2016
儘管 MAPI 提供豐富的屬性供客戶端和服務提供者使用,MAPI 還是可視需要建立新的屬性。 定義新公用屬性的一些有效案例包括用戶端建立屬性以支援新的訊息類別,以及建立新屬性以公開唯一訊息系統功能的服務提供者。
服務提供者定義現有MAPI物件或訊息類別的新屬性通常無效。 使用MAPI的主要優點之一是已設定大量傳訊系統元素的標準標識碼和格式,讓用戶能夠順暢地混合及比對服務提供者。 使用非標準屬性的服務提供者不適用於其他服務提供者。
用戶端可以透過下列方式建立新訊息類別的內容屬性:
在訊息類別特定內容屬性的指定範圍內使用屬性標識碼。
- 或-
使用具名屬性。
第一個選項比較適合,因為並非所有服務提供者都支援具名屬性。 MAPI 會定義兩個不同的範圍,讓用戶端用於新的訊息類別特定內容屬性:
0x6800傳輸數據屬性的0x7BFF
0x7C00至不可傳輸屬性的0x7FFF
屬性標識碼必須落在預先定義的範圍中,以協助防止不同廠商或使用者所定義的屬性之間發生衝突。 不過,這些範圍中屬性的使用者無法假設屬性的行為。 建立新訊息類別的每個用戶端都可以存取這些範圍;標識元為 xxxx 的屬性可能表示一個訊息類別有一個行為,另一個則表示另一個訊息類別的行為。
具名屬性可用來保證特定屬性對訊息類別而言是唯一的。 具名屬性標識碼會從0x8000範圍開始。 用戶端會定義一或多個名稱,然後呼叫訊息存放區的 IMAPIProp::GetIDsFromNames 方法,將標識碼與每個名稱產生關聯。 只有當對象的擁有者支援具名屬性時,客戶端或服務提供者才能使用具名屬性來定義任何物件的新屬性。 這些屬性的使用者會呼叫 GetIDsFromNames 和相關的 IMAPIProp 方法 GetNamesFromIDs,以在名稱與其標識符之間對應。
所有新的或現有的屬性都必須使用一組預先定義的屬性類型。 無法新增新的屬性類型,也無法修改或刪除現有的類型。 簡單、小型的屬性,例如單一字元或16位整數屬性,可以儲存在任何適當的類型中。 例如,整數可以儲存為 ULONG ,而字串可以儲存為 PT_STRING8。
使用 PT_BINARY 型別來表示已計算的位元組陣列。 這個屬性類型適用於擴充可儲存在 對象中的數據類型。 位元組會依序傳輸,而且不會對數據的意義進行任何假設。 當用戶端應用程式從這類屬性讀取資料時,資料的儲存方式不會變更。 在 CPU 之間行動資料時,客戶端必須執行任何必要的位元組交換。