MAPI 表单服务器
适用于:Outlook 2013 | Outlook 2016
从用户的角度来看,窗体通常是邮件的属性表或使用户能够输入结构化信息的数据输入表单。 但是,它可以是与消息类关联的任何用户界面。 从程序员的角度来看,窗体包括:
具有其自己的消息类和 OLE 标识符的 MAPI 消息类型。
实现表单服务器的可执行文件。
表单服务器使用的 MAPI 属性的集合(自定义或其他属性)。 其中部分或全部可能可供消息客户端使用。
描述窗体的 配置文件,由表单管理器使用。
由于表单是 IMessage 对象,因此它们表现出与 MAPI 消息对象一致的属性和行为。 但是,由于表单可以具有自定义属性、控件和特定于应用程序的显示呈现,因此表单使用的 MAPI 接口非常通用,足以允许所需的任何类型的接口。 窗体的实际定义存储在表单库中,本节稍后将对此进行介绍。
注意
更准确地说,所有消息都是 MAPI 表单的实例。 但是,通常更容易将自定义窗体视为邮件的特殊情况,因为用于撰写和阅读典型电子邮件的表单是最常用的表单。 所有消息实际上只是窗体,这一事实为自定义窗体提供了与 MAPI 系统中的任何其他消息相同的状态。
每个窗体都有一组属性,其中一些属性在窗体的用户界面中可见。 通常,属性与窗体用户界面中的字段匹配。 例如,采购订单窗体可能具有“项”、“说明”、“价格”、“税务”和“小计”字段。 这些字段只是相同名称的表单属性的可视化呈现。 客户端通过 IMAPIFormInfo::CalcFormPropSet 方法确定特定消息类支持哪些属性,该方法由 MAPI 表单管理器实现。
与基本邮件一样,MAPI 表单可以包含所有标准邮件属性,例如发件人、目标收件人和邮件发送时间。 窗体还可以包含任意数量的特定于窗体的自定义属性。 例如,“Bug 报告”窗体可能包含 Bug 类型、Bug 严重性和产品版本的自定义属性。
若要创建窗体,必须实现表单服务器。 表单服务器是当消息客户端需要显示表单服务器支持的消息类型的文件时加载的可执行文件。 表单服务器又根据需要创建表单对象,以显示特定消息并处理用户与这些邮件的交互。
每个表单服务器都有一个与之关联的配置文件。 此文件包含描述表单服务器的信息,以利于表单管理器。 表单管理器在将表单服务器安装到表单库中时使用此信息。
有关创建窗体部分的详细信息,请参阅 开发 MAPI 表单服务器。
表单服务器遵循组件对象模型 (COM) 。 表单服务器作为独立的可执行文件运行,而不是作为工作中的服务器运行。 有关详细信息,请参阅Windows SDK中的 COM 和 ActiveX 对象服务部分。
CLSID) 唯一类标识符 (标识每个表单服务器。 类标识符与其消息类之间始终存在一对一映射。 但是,这并不意味着表单服务器只能处理一个邮件类的邮件。 如果没有表单服务器可用于为特定类的邮件提供服务,则使用的表单管理器应尝试查找邮件类层次结构中较高位置的邮件类的表单服务器;随 Windows SDK提供的默认表单管理器执行此操作。 此类表单服务器可能只能呈现消息的一部分属性 (超类) 支持的属性,但总比什么都好。 当找不到匹配的表单服务器时,会发生的情况是特定于正在使用的表单管理器的实现详细信息;发生此情况时,默认表单管理器不会打开邮件。
有关详细信息,请参阅 MAPI 消息类。