IXPLogon::AddressTypes
適用於:Outlook 2013 |Outlook 2016
傳回傳輸提供者處理的收件者類型。
HRESULT AddressTypes(
ULONG FAR * lpulFlags,
ULONG FAR * lpcAdrType,
LPSTR FAR * FAR * lpppszAdrTypeArray,
ULONG FAR * lpcMAPIUID,
LPUID FAR * FAR * lpppUIDArray
);
參數
lpulFlags
[out]控制所傳回字串類型的旗標位掩碼。 您可以設定下列旗標:
MAPI_UNICODE
傳回的字串是 Unicode 格式。 如果未設定MAPI_UNICODE旗標,則字串會是 ANSI 格式。
lpcAdrType
[out] lpppszAdrTypeArray 參數所指向陣列中專案計數的指標。
lpppszAdrTypeArray
[out]指標,指向識別收件者類型的字串數位。
lpcMAPIUID
[out] lpppUIDArray 參數所指向數位中項目計數的指標。
lpppUIDArray
[out] MAPIUID 結構指標數位指標的指標的指標,可識別收件者類型。
傳回值
S_OK
傳輸提供者已成功指出可處理的收件者類型。
實作者注意事項
MAPI 多任務緩衝處理程式會在傳輸提供者從IXPProvider::TransportLogon 方法的呼叫傳回之後立即呼叫 IXPLogon::AddressTypes 方法,讓傳輸提供者可以指出它所處理的收件者類型。 若要指出這一點,傳輸提供者應該將指標傳回 lpppszAdrTypeArray 參數給字串指標數位的指標,或傳回 lpppUIDArray 參數中 MAPIUID 結構指標數位的指標,或在這兩個參數中傳遞值。
這兩個數位用於不同的識別程式。 MAPI 和 MAPI 多任務緩衝處理器會使用 lpppUIDArray 陣列中的 MAPIUID 結構,來識別傳輸提供者或傳輸提供者所連接之傳訊系統直接處理的收件者專案標識符。 MAPI 和 MAPI 多任務緩衝處理器都不會使用任何 MAPIUID 結構中包含的專案識別碼來擴充位址;這些結構僅用於收件者類型識別。
MAPI 多任務緩衝處理程式會在決定哪個傳輸提供者應處理輸出訊息的收件者時,使用 lpppszAdrTypeArray 參數中的每個字串進行比較測試。 如果郵件收件者的 PR_ADDRTYPE (PidTagAddressType) 屬性完全符合識別傳輸提供者所提供之其中一種訊息地址類型的字元串,則提供者可以將郵件傳遞給該收件者。
如果多個傳輸提供者可以處理相同類型的收件者,MAPI 會根據用戶端應用程式配置檔中指出的傳輸優先順序來選取傳輸提供者。 為了判斷要使用的傳輸提供者,MAPI 多任務緩衝處理器會依優先順序掃描所有提供者指定的 MAPIUID 結構,然後依優先順序掃描所有提供者指定的位址類型值。 在此掃描中符合特定收件者的第一個傳輸提供者會取得處理此收件者的第一個機會。 如果該提供者未處理收件者,MAPI 多任務緩衝處理程式會繼續掃描,以尋找任何尚未處理之收件者的傳輸提供者。 掃描會繼續進行,直到找不到進一步的相符專案為止,此時會為未處理的任何收件者產生非交付報告。
如果提供者一律支援一組特定的收件者類型,則傳輸提供者傳遞的位址類型和 MAPIUID 陣列可以是靜態的。 如果傳輸提供者以動態方式建構這些數位,它可以使用先前在 TransportLogon 呼叫中傳遞的支援物件來配置記憶體,雖然這並非必要。
用於位址類型和 MAPIUID 陣列的記憶體應該維持配置,直到 最後呼叫 IXPLogon::TransportLogoff 方法為止,此時傳輸提供者可以視需要釋放記憶體。 傳輸提供者不應該在從 TransportLogoff 呼叫傳回之後改變這些數位的內容。
可處理任何類型收件者的傳輸提供者可以在 lpppszAdrTypeArray 參數中傳回 NULL。 使用中央伺服器將傳出訊息傳遞至各種外部訊息系統的 LAN 型傳訊系統傳輸提供者通常會這麼做。 此類型的傳輸提供者應該最後安裝在配置檔中傳輸提供者的MAPI和MAPI多任務緩衝處理器優先順序中。
不支援根據位址類型分派給它的輸出訊息的傳輸提供者,應該傳回 lpppszAdrTypeArray 中的單一零長度字串。 如果傳輸提供者不支援收件者類型,它應該針對 MAPIUID 結構傳遞NULL,並針對位址類型傳遞空字串。 這種類型的傳輸提供者最常用來安裝訊息預處理器。