MAPI 表
适用于:Outlook 2013 | Outlook 2016
MAPI 表是 MAPI 对象,用于查看属于特定类型的其他 MAPI 对象的属性集合。 MAPI 表采用行和列格式结构,每行表示对象,每列表示对象的属性。 每行中通常包含的属性之一是 pidTagEntryId) 属性PR_ENTRYID (,该属性是可用于打开和修改对象的标识符。
由于行包含属性值,因此从表中检索行类似于直接从该行表示的对象获取一组属性。 这两个操作都会导致检索属性值数组。 main区别在于处理长字符串和二进制属性。 为了包含在表中,某些表实现程序将这些属性截断为 255 个字节。 当直接从 对象检索时,完整值始终可用。
表由通讯簿和消息存储提供程序以及 MAPI 实现,具体取决于表的类型及其中的对象。 邮件存储提供程序为每个文件夹实现文件夹和目录,其中包含有关文件夹中邮件的信息。 通讯簿提供程序实现通讯簿容器和显示其组织的层次结构表。 MAPI 实现多个不同的表,一些表供客户端应用程序使用,一些表供服务提供商使用,另一些表供两者使用。 状态表是唯一的,MAPI 最终会提供该表,但除了 MAPI 之外,这些行还包含所有类型的服务提供商的贡献。
下图显示了 MAPI 中表的常见用法之一:显示文件夹的内容。 右侧显示两条消息,可能显示在典型的消息传递客户端应用程序中。 显示包含每封邮件的四条信息:发件人、收件人、主题和邮件文本。 每条信息都对应于消息的一个属性。
左侧是包含这两条消息的内容表的视图。 虽然内容表可能有 10 行,因为文件夹包含 10 条消息,每一行包含多于三列,但此特定视图限制为仅两行和三列。
下表显示了构成表视图的列集的属性。
属性 | 说明 |
---|---|
PR_SENDER_NAME (PidTagSenderName) |
发件人名称 |
PR_ORIGINAL_DELIVERY_TIME (PidTagOriginalDeliveryTime) |
发送邮件的日期和时间 |
PR_SUBJECT (PidTagSubject) |
邮件主题行 |
请注意,消息中显示的属性集与表中显示的列集不同。 表的实现者(在本例中为消息存储提供程序)按默认顺序提供一组默认列。 客户端可以修改此列集,请求其他列或拒绝默认列,并要求按特定方式对其进行排序。 客户端还可以对行进行排序,根据一列或多列的值对行进行排序。
使用表格显示文件夹内容
有两个用于处理表的接口:
IMAPITable:IUnknown 为客户端和服务提供商提供了表的基础数据的只读视图,允许它们仅查看和更改演示文稿。 多个用户可以使用 IMAPITable 同时访问同一数据。 IMAPITable 由 MAPI 和服务提供商实现。
ITableData :IUnknown 为客户端和服务提供商提供对表基础数据的读/写访问权限,允许它们进行永久更改。 IMAPITable 由 MAPI 实现,主要由通过调用 CreateTable 函数访问它的服务提供商使用。 ITableData 实现保存表的所有数据以及内存中的任何相关限制,使其不适合用于非常大的表。 不支持复合限制和复杂操作(例如分类)。