MAPI 配置文件

适用于:Outlook 2013 | Outlook 2016

配置文件存储有关计算机上安装的服务提供商和消息服务的信息。 对于每个会话,客户端在登录时都会选择一个描述要使用的提供程序和服务的配置文件。 客户端可以从配置文件集合中进行选择,并根据需要建立一个作为默认配置文件。 默认配置文件是在客户端启动会话且未显式指定配置文件时自动选择的配置文件。

此外,在这些主题中,你将找到有关别名缓存的讨论,该缓存存储在二进制流中。

配置文件部分

配置文件分为多个部分,客户端和服务提供商可以访问这些部分,以便向用户显示配置文件属性或进行配置更改。 配置文件部分是实现 IProfSect 接口的 MAPI 对象,它是派生自 IMAPIProp 且没有其他方法的接口。 有关详细信息,请参阅 IProfSect:IMAPIProp。 它的唯一用途是操作配置文件节的属性。 若要检索指向特定配置文件节的 IProfSect 指针,客户端和服务提供商调用以下方法。

属性
客户端可以调用:
IMAPISession::OpenProfileSection
服务提供商可以调用:
IMAPISupport::OpenProfileSection
客户端或提供程序都可以调用:
IProviderAdmin::OpenProfileSection

配置文件的层次结构与 MAPISVC 非常类似。INF 文件。 在层次结构的顶部,有包含与配置文件相关的信息的配置文件部分。 中间级别包括包含特定消息服务相关信息的节,较低级别包括包含有关消息服务中某个服务提供程序的信息的部分。

每个配置文件都有多个必需属性,这些属性存储在配置文件的一个或多个节中。 例如,每个配置文件都具有 PR_PROFILE_NAME (PidTagProfileName) 和 PR_SEARCH_KEY (PidTagSearchKey) 属性。 配置文件的搜索键设置为 MAPIGUID 中定义的值。H 作为MUID_PROFILE_INSTANCE,始终保证在所有配置文件中是唯一的。 尽管两个配置文件可以具有相同的名称,但它们不能具有相同的搜索键。 搜索键应被视为二进制数据,而不是任何特定类型的数据。

消息存储提供程序需要在配置文件及其消息存储 提供程序的配置文件 节中包含其消息存储PR_DISPLAY_NAME (PidTagDisplayName) 属性,并使这些条目保持同步。 创建消息存储时,提供程序会根据这些配置文件节中存储的值设置 PR_DISPLAY_NAME

配置文件部分与继承自 IMAPIProp 的其他对象之间存在两个主要区别:

由于配置文件部分不支持事务,因此通过调用 IMAPIProp::CopyPropsCopyToSetProps 所做的任何更改都会立即生效。 有关详细信息,请参阅 IMAPIProp::CopyProps。 客户端和服务提供商可以调用配置文件部分的 IMAPIProp::SaveChanges 方法,该方法将成功,但不会影响配置文件部分数据。 有关详细信息,请参阅 IMAPIProp::SaveChanges。 立即发生更改可能会影响服务提供商实现客户端用于向用户显示配置文件属性的属性表的方式。 希望用户能够推迟或撤消更改的服务提供商必须使用配置文件部分的副本(而不是真实部分)实现其属性表。 通过使用副本,用户可以进行更改,然后稍后取消这些更改,使原始配置文件部分保持不变。

信息在配置文件中的显示顺序会影响 MAPI 在会话中配置资源和进行分配的方式。 以下分配受配置文件顺序影响:

  • 默认消息存储

  • 个人通讯簿

  • 默认邮件存储搜索路径

  • 默认通讯簿搜索路径

  • 传输提供程序顺序

MAPI 将默认消息存储设置为配置文件中的第一个消息存储区,该存储区在其 PR_RESOURCE_FLAGS (PidTagResourceFlags) 属性中设置了STATUS_DEFAULT_STORE标志,该属性指示它可以是默认存储区。 客户端可以通过调用 IMAPISession::SetDefaultStore 来替代此设置。 有关详细信息,请参阅 IMAPISession::SetDefaultStore

MAPI 创建用于处理传出和传入消息的传输顺序。 当多个传输提供程序为特定类型的消息注册时,MAPI 使用此顺序来确定哪个提供程序应处理该消息。 MAPI 将传输顺序设置为将传输提供程序添加到配置文件的顺序,但有一个例外- 在其 PR_RESOURCE_FLAGS 属性中设置STATUS_XP_PREFER_LAST标志的传输将按顺序排列在最后。 客户端可以通过调用 IMsgServiceAdmin::MsgServiceTransportOrder 来设置传输顺序。 有关详细信息,请参阅 IMsgServiceAdmin::MsgServiceTransportOrder

这些订购服务提供商和消息服务的准则有时可能会发生冲突。 如果存在冲突,代码应解决冲突。 可以使用邮件控制面板程序检查已创建的配置文件,以确定提供程序是否已按预期进行配置。