IAddrBook::ResolveName
適用於:Outlook 2013 |Outlook 2016
執行名稱解析,將專案標識碼指派給收件者清單中的收件者。
HRESULT ResolveName(
ULONG_PTR ulUIParam,
ULONG ulFlags,
LPSTR lpszNewEntryTitle,
LPADRLIST lpAdrList
);
參數
ulUIParam
[in]對話框的父視窗句柄,如果指定,則會提示用戶解決模棱兩可的情況。
ulFlags
[in]控制解析程式各個層面的旗標位掩碼。 您可以設定下列旗標:
AB_UNICODEUI
指出 lpszNewEntryTitle 是 UNICODE 字串。
MAPI_CACHE_ONLY
僅使用離線通訊錄來執行名稱解析。 例如,您可以使用此旗標來允許用戶端應用程式在快取交換模式中開啟 GAL) 的全域通訊清單 (,並從快取存取該通訊簿中的專案,而不需要在用戶端與伺服器之間建立流量。 只有 Exchange 通訊簿提供者支援此旗標。
MAPI_DIALOG
顯示對話框,提示使用者提供其他名稱解析資訊。 如果未設定此旗標,則不會顯示任何對話框。
MAPI_UNICODE
指出位址清單中傳回的屬性應為類型PT_UNICODE,而不是PT_STRING8。
lpszNewEntryTitle
[in]對話框中控件標題的文字指標,提示使用者輸入收件者。 標題會根據收件者的類型而有所不同。 lpszNewEntryTitle 参數可以是 NULL。
lpAdrList
[In-out] ADRLIST 結構的指標,其中包含要解析的收件者名稱清單。 此 ADRLIST 結構可由 IAddrBook::Address 方法建立。
傳回值
S_OK
名稱解析程式成功。
MAPI_E_AMBIGUOUS_RECIP
lpAdrList 參數中至少有一個收件者符合通訊簿中的多個專案。 通常,設定MAPI_DIALOG旗標時會傳回此值,禁止顯示對話方塊。
MAPI_E_NOT_FOUND
無法解析 lpAdrList 參數中至少一個收件者。 通常,設定MAPI_DIALOG旗標時會傳回此值,禁止顯示對話方塊。
註解
用戶端和服務提供者會呼叫 ResolveName 方法來起始名稱解析程式。 無法解析的專案是尚未具有專案標識碼或 PR_ENTRYID (PidTagEntryId) 屬性的專案。
ResolveName 會針對在 lpAdrList 參數中傳遞的地址清單中每個未解析的項目,進行下列程式。
如果收件者的位址類型遵守 smTP 位址的格式, ( displayname@ domain.top-level-domain) ,ResolveName 會為它指派一次性專案標識符。
針對 PR_AB_SEARCH_PATH (PidTagAbSearchPath) 屬性中的每個容器, ResolveName 會呼叫 IABContainer::ResolveNames 方法。 ResolveNames 會嘗試比對每個無法解析之收件者的顯示名稱,以及屬於其中一個專案的顯示名稱。
如果容器不支援 ResolveNames,ResolveName 會使用 PR_ANR (PidTagAnr) 屬性限制來限制容器的內容數據表。 這項限制會導致容器執行「最佳猜測」類型的搜尋,以找出相符的收件者。 所有容器都必須支援 PR_ANR 屬性限制。
當容器傳回符合多個名稱的收件者時,如果已設定MAPI_DIALOG旗標, ResolveName 會顯示對話方塊,讓使用者選取正確的名稱。
如果已呼叫 PR_AB_SEARCH_PATH 屬性中的所有容器,但找不到相符專案,則收件者仍無法解析。
如果無法解析一或多個收件者, ResolveName 會 傳回MAPI_E_NOT_FOUND。 如果一或多個收件者具有無法使用對話框解析的模棱兩可的解析,或因為未設定MAPI_DIALOG旗標, ResolveName 會傳回MAPI_E_AMBIGUOUS_RECIP。 當某些收件者模棱兩可且有些收件者無法解析時, ResolveName 可以傳回任一錯誤值。
如果無法解析名稱,用戶端可以建立具有特殊格式化位址和專案標識碼的一次性位址。 如需一次性專案標識碼格式的詳細資訊,請參閱 一次性專案標識碼。 如需一次性位址格式的詳細資訊,請參閱 一次性位址。
MAPI 支援 ADRLIST 的 Unicode 字元字串,以及 ResolveName 的新專案標題參數;如果您設定MAPI_UNICODE旗標,則會在 ADRENTRY 結構中以類型PT_UNICODE傳回下列屬性:
PR_ADDRTYPE (PidTagAddressType)
PR_DISPLAY_NAME (PidTagDisplayName)
PR_EMAIL_ADDRESS (PidTagEmailAddress)
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName)
不過, PR_7BIT_DISPLAY_NAME (PidTag7BitDisplayName) 屬性一律會以類型PT_STRING8傳回。
MFCMAPI 參考
如需 MFCMAPI 範例程式代碼,請參閱下表。
檔案 | Function | Comment |
---|---|---|
MAPIABFunctions.cpp |
AddOneOffAddress |
MFCMAPI 會使用 ResolveName 方法來解析一次性位址,再將它新增至訊息。 |
MAPIABFunctions.cpp |
AddRecipient |
MFCMAPI 會使用 ResolveName 方法,依顯示名稱查閱通訊錄專案。 |