内容表
适用于:Outlook 2013 | Outlook 2016
内容表包含有关 MAPI 容器中对象的信息。 通讯簿提供程序为其每个容器实现内容表,消息存储和远程传输提供程序为其文件夹实现内容表。 通讯簿容器的目录列出了有关其邮件用户和通讯组列表对象的信息,而文件夹的 contents 表列出有关其邮件的信息。 内容表主要由客户端应用程序使用。
有两种类型的文件夹内容表:
标准内容表包含标准消息 - 可以传输的消息,并且这些消息对用户可见。
关联内容表包含客户端为特定目的(例如存储标准消息的备用表示形式)创建的隐藏的不可传输信息。 通过将 MAPI_ASSOCIATED 标志传递给 IMAPIFolder::CreateMessage 调用来创建相关信息。
大多数通讯簿容器和许多文件夹的目录不支持分类排序。
可以通过调用以下内容来访问内容表:
IMAPIContainer::GetContentsTable。
- 或-
IMAPIProp::OpenProperty 与 PR_CONTAINER_CONTENTS (PidTagContainerContents) 或 PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents) (文件夹) 指定为属性标记,IID_IMAPITable作为接口标识符。
消息存储和通讯簿提供程序必须支持这两种检索表属性的技术。 提供程序只支持访问这些表的一种方式是不可接受的,因为客户端希望有选择。
GetContentsTable 接受多个指定首选项的标志作为输入。 设置后,MAPI_ASSOCIATED标志将检索关联的内容表。 由于某些文件夹不支持关联内容,并且客户端无法提前确定此内容,因此,当请求关联内容表时, GetContentsTable 有时会返回错误MAPI_E_NO_SUPPORT。
MAPI_DEFERRED_ERRORS标志向表的实现者指示,调用期间遇到的任何错误都需要在稍后的时间进行报告。
对 IMAPIProp::OpenProperty 的调用涉及通过打开内容表的相应属性来访问内容表, PR_CONTAINER_CONTENTS 通讯簿内容表和标准文件夹内容表,以及为关联内容表 PR_FOLDER_ASSOCIATED_CONTENTS 。 虽然不能通过文件夹或容器的 IMAPIProp::GetProps 方法检索这两个或这些属性,但它们包含在 IMAPIProp::GetPropList 方法返回的属性标记数组中。
PR_CONTAINER_CONTENTS 还可用于在复制操作中包含或排除内容表。 如果客户端在复制操作中的 lpExcludeProps 参数中为 IMAPIProp::CopyTo 指定了PR_CONTAINER_CONTENTS,则新文件夹或容器将不支持原始文件夹或容器的内容表。
通讯簿容器和文件夹内容表具有一个较长的必需列列表,这些列在客户端从 GetContentsTable 或 OpenProperty 检索表后有望可用。 如有必要,提供程序可以添加到此所需集,客户端也可以通过 SetColumns 方法请求修改。
每种内容类型表的必需列包括:
必需列 | 目录的类型 |
---|---|
PR_ADDRTYPE (PidTagAddressType) |
通讯簿容器表 |
PR_DISPLAY_NAME (PidTagDisplayName) |
通讯簿容器表 |
PR_DISPLAY_CC (PidTagDisplayCc) |
邮件存储文件夹表 |
PR_DISPLAY_TO (PidTagDisplayTo) |
所有文件夹内容表 |
PR_DISPLAY_TYPE (PidTagDisplayType) |
通讯簿容器表 |
PR_ENTRYID (PidTagEntryId) |
所有内容表 |
PR_HASATTACH (PidTagHasAttachments) |
所有文件夹内容表 |
PR_INSTANCE_KEY (PidTagInstanceKey) |
所有内容表 |
PR_LAST_MODIFICATION_TIME (PidTagLastModificationTime) |
邮件存储文件夹表 |
PR_MAPPING_SIGNATURE (PidTagMappingSignature) |
邮件存储文件夹表 |
PR_MESSAGE_CLASS (PidTagMessageClass) |
所有文件夹内容表 |
PR_MESSAGE_DOWNLOAD_TIME (PidTagMessageDownloadTime) |
远程传输文件夹表 |
PR_MESSAGE_FLAGS (PidTagMessageFlags) |
所有文件夹内容表 |
PR_MESSAGE_SIZE (PidTagMessageSize) |
所有文件夹内容表 |
PR_MSG_STATUS (PidTagMessageStatus) |
所有文件夹内容表 |
PR_OBJECT_TYPE (PidTagObjectType) |
所有内容表 |
PR_PARENT_ENTRYID (PidTagParentEntryId) |
邮件存储文件夹表 |
PR_RECORD_KEY (PidTagRecordKey) |
通讯簿容器和邮件存储文件夹表 |
PR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) |
远程传输文件夹表 |
PR_STORE_ENTRYID (PidTagStoreEntryId) |
邮件存储文件夹表 |
PR_STORE_RECORD_KEY (PidTagStoreRecordKey) |
邮件存储文件夹表 |
每行可用的条目标识符可以是短期或长期条目标识符,具体取决于表实现。 短期条目标识符通常用于性能问题的情况。 任一类型的条目标识符都可用于访问相应的对象。
内容表还有一组可选列,但通常由服务提供商在其实现中包括。 这些可选列包括:
可选列 | 目录的类型 |
---|---|
PR_CLIENT_SUBMIT_TIME (PidTagClientSubmitTime) |
邮件存储文件夹表 |
PR_CONTENT_COUNT (PidTagContentCount) |
标准文件夹内容表 |
PR_CONTENT_UNREAD (PidTagContentUnreadCount) |
标准文件夹内容表 |
PR_CONVERSATION_INDEX (PidTagConversationIndex) |
邮件存储文件夹表 |
PR_EMAIL_ADDRESS (PidTagEmailAddress) |
通讯簿容器表 |
PR_IMPORTANCE (PidTagImportance) |
所有文件夹内容表 |
PR_MESSAGE_DELIVERY_TIME (PidTagMessageDeliveryTime) |
所有文件夹内容表 |
PR_NORMALIZED_SUBJECT (PidTagNormalizedSubject) |
所有文件夹内容表 |
PR_PRIORITY (PidTagPriority) |
所有文件夹内容表 |
PR_SEARCH_KEY (PidTagSearchKey) |
通讯簿容器表 |
PR_SEND_RICH_INFO (PidTagSendRichInfo) |
通讯簿容器表 |
PR_SENDER_NAME (PidTagSenderName) |
所有文件夹内容表 |
PR_SENSITIVITY (PidTagSensitivity) |
所有文件夹内容表 |
PR_SUBJECT (PidTagSubject) |
所有文件夹内容表 |
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName) |
通讯簿容器表 |
消息存储提供程序还必须包含仅针对搜索结果文件夹内容表的 PR_PARENT_DISPLAY (PidTagParentDisplay) 。
仅当文件夹中的所有邮件具有相同的映射签名(即属性名称到属性标识符的相同映射)时,命名属性才能添加到文件夹内容表的列集中。 如果文件夹内容表支持在文件夹中创建任意邮件,则文件夹内容表应支持向列集添加邮件类特定的属性。
客户端可以通过调用文件夹内容表的 IMAPIFolder::SaveContentsSort 方法保存文件夹内容表的默认排序顺序。 如果在调用中指定了RECURSIVE_SORT标志,则可以将排序顺序应用于文件夹中的所有子文件夹。