共用方式為


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 參數中傳遞的地址清單中每個未解析的項目,進行下列程式。

  1. 如果收件者的位址類型遵守 smTP 位址的格式, ( displayname@ domain.top-level-domain) ,ResolveName 會為它指派一次性專案標識符。

  2. 針對 PR_AB_SEARCH_PATH (PidTagAbSearchPath) 屬性中的每個容器, ResolveName 會呼叫 IABContainer::ResolveNames 方法。 ResolveNames 會嘗試比對每個無法解析之收件者的顯示名稱,以及屬於其中一個專案的顯示名稱。

  3. 如果容器不支援 ResolveNames,ResolveName 會使用 PR_ANR (PidTagAnr) 屬性限制來限制容器的內容數據表。 這項限制會導致容器執行「最佳猜測」類型的搜尋,以找出相符的收件者。 所有容器都必須支援 PR_ANR 屬性限制。

  4. 當容器傳回符合多個名稱的收件者時,如果已設定MAPI_DIALOG旗標, ResolveName 會顯示對話方塊,讓使用者選取正確的名稱。

  5. 如果已呼叫 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_7BIT_DISPLAY_NAME (PidTag7BitDisplayName) 屬性一律會以類型PT_STRING8傳回。

MFCMAPI 參考

如需 MFCMAPI 範例程式代碼,請參閱下表。

檔案 Function Comment
MAPIABFunctions.cpp
AddOneOffAddress
MFCMAPI 會使用 ResolveName 方法來解析一次性位址,再將它新增至訊息。
MAPIABFunctions.cpp
AddRecipient
MFCMAPI 會使用 ResolveName 方法,依顯示名稱查閱通訊錄專案。

另請參閱

ADRLIST

IABContainer::ResolveNames

IAddrBook::Address

IAddrBook:IMAPIProp

MFCMAPI 作為程式碼範例