MAPI 主标识

适用于:Outlook 2013 | Outlook 2016

大多数 MAPI 会话都有一个为会话提供主标识的特定服务提供商。 通常,它是通讯簿提供程序,通过邮件传递用户对象或通讯组列表之一提供标识。 事实上,MAPI 建议包含通讯簿提供程序的邮件服务使用其对象之一作为主标识。 当属于邮件服务的服务提供商提供主标识时,邮件服务中的所有其他服务提供商将共享此标识。

MAPISVC。INF 配置文件在邮件服务和服务提供商级别都有与标识相关的条目。 邮件服务部分必须包含一个条目,该条目指出服务是否可以提供主标识;只有在提供程序提供标识时,服务提供程序部分才包括类似的条目。

下表列出了 MAPISVC 中邮件服务和服务提供程序部分出现的条目。INF 文件。

主要标识供应商 PR_RESOURCE_FLAGS设置
邮件服务
SERVICE_PRIMARY_IDENTITY
不是邮件服务
SERVICE_NO_PRIMARY_IDENTITY
服务提供程序
STATUS_PRIMARY_IDENTITY

尽管多个邮件服务可以声明它们提供会话的主标识的能力,但仅选择了一个邮件服务来这样做。 此选择可能发生:

  • 创建配置文件时。

  • 当客户端调用 IMsgServiceAdmin::SetPrimaryIdentity 以明确建立特定邮件服务作为会话标识的提供程序时。 有关详细信息。 请参阅 IMsgServiceAdmin::SetPrimaryIdentity

创建配置文件时,MAPI 指定要配置的第一个邮件服务,其中包括在其 PR_RESOURCE_FLAGS (PidTagResourceFlags) 属性中设置了 STATUS_PRIMARY_IDENTITY 标志的提供程序,以提供主标识。 在指定的邮件服务中,将选择第一个要配置此资源标志集的提供程序,以提供该服务的标识。 为STATUS_PRIMARY_IDENTITY服务中的所有其他提供程序和配置文件中的其他邮件服务清除此标记。 如果随时从配置文件中删除提供主标识的提供程序,MAPI 将角色分配给下一个可以提供标识的提供程序。 这由 PR_RESOURCE_FLAGS=STATUS_PRIMARY_IDENTITY MAPISVC.INF 中提供程序部分中条目的外观决定。

当客户端调用邮件服务的 IMsgServiceAdmin::SetPrimaryIdentity 方法时,它会为目标服务中的服务提供商指定 MAPIUID。 有关详细信息,请参阅 MAPIUIDMAPIUID 表示的服务提供商被分配为提供邮件服务和会话的主标识,服务中的所有其他提供程序将共享此标识。

邮件服务中负责提供主标识的每一个提供程序都会更新其状态表中的行,以包括以下属性。

主标识属性 设置为
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay)
提供主标识的对象的显示名称。
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey)
提供主标识的对象的搜索键。
PR_IDENTITY_ENTRYID ( PidTagIdentityEntryId)
提供主标识的对象的条目标识符。

检索提供主标识的对象的条目标识符

  • 调用 IMAPISession::QueryIdentity 方法。 有关详细信息,请参阅 IMAPISession::QueryIdentityQueryIdentity 在状态表中搜索包含 STATUS_PRIMARY_IDENTITY PR_RESOURCE_FLAGS 值的行,并返回相应的 PR_IDENTITY_ENTRYID 作为主 标识的条目标识符。