MAPI 会话

适用于:Outlook 2013 | Outlook 2016

客户端应用程序必须与 MAPI 子系统建立会话或连接,然后才能调用基础消息传送系统。

会话在用户登录时启动,该进程访问有效的配置文件并验证消息传送系统和消息服务凭据。 然后,该过程可确保正确配置所有配置文件的消息服务。 使用的客户端接口确定登录调用。 MAPI 客户端调用 MAPILogonEx 函数。

消息服务配置是登录过程中最重要的部分之一。 配置文件是配置信息的初始源。 如果缺少特定消息服务的信息,登录过程会尝试提示用户提供它。 这并不总是成功,原因有两个:首先,提示用户需要显示对话框。 客户端可以通过将标志传递到登录调用来禁止显示用户界面。 其次,用户可以在添加所需信息之前取消对话框。

当登录过程失败一次时,会通知用户失败,并有机会重试或更正错误条件。 如果客户端允许,将再次显示用户界面,并且系统将提示用户输入缺少的任何数据。 如果第二次尝试失败,MAPI 在会话期间禁用消息服务中的所有服务提供程序。 实际上,将禁用整个消息服务。 这意味着消息服务中的任何服务提供程序都无法正常工作。 这样做是因为如果一个提供程序登录失败,其他提供程序通常也会失败。 登录过程可能会因必要资源路径无效、MAPI 版本不兼容、消息服务器不可用或数据损坏而失败。

客户端可以指定要在登录调用中建立的两种类型的会话之一:单个会话或共享会话。 单个会话是专用连接;客户端应用程序与它使用的会话之间存在一对一关系。 因此,共享会话的客户端应用程序也会共享配置文件。 共享会话建立一次,但可由需要使用共享会话的其他客户端应用程序使用。 配置文件和凭据仅在初始登录时指定。

客户端可以同一用户或多个用户多次登录。 MAPI 不会阻止这种情况。 但是,某些服务提供商可能不太灵活,在后续登录尝试中返回错误值MAPI_E_SESSION_LIMIT。 可能需要具有基础硬件限制的服务提供商来强制实施会话限制。

用于建立会话的函数调用具有一个标志和参数的集合,这些标志和参数控制会话的创建方式。 客户端指定可选的配置文件名称和窗口句柄,该窗口句柄充当显示的任何对话框的父窗口。 标志包括MAPI_NEW_SESSION,该) 请求建立新的单个会话 (而不是共享会话,以及MAPI_LOGON_UI用户界面标志。 用户界面标志设置为请求登录对话框。

下图显示了这些各种参数和标志如何建立 MAPI 会话。

MAPI 会话流程图

MAPI 会话流程图

有关从客户端应用程序内处理会话的信息,请参阅 MAPI 会话处理

另请参阅