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 示例代码,请参阅下表。

文件 函数 Comment
MAPIABFunctions.cpp
AddOneOffAddress
MFCMAPI 在将一次性地址添加到消息之前,使用 ResolveName 方法解析一次性地址。
MAPIABFunctions.cpp
AddRecipient
MFCMAPI 使用 ResolveName 方法按显示名称查找通讯簿条目。

另请参阅

ADRLIST

IABContainer::ResolveNames

IAddrBook::Address

IAddrBook : IMAPIProp

MFCMAPI 代码示例