Таблицы содержимого
Область применения: Outlook 2013 | Outlook 2016
Таблица содержимого содержит сведения об объектах в контейнере MAPI. Поставщики адресных книг реализуют таблицы содержимого для каждого из своих контейнеров, а поставщики хранилища сообщений и удаленного транспорта реализуют таблицы содержимого для своих папок. В таблице содержимого контейнера адресной книги содержатся сведения о пользователях сообщений и объектах списка рассылки, а в таблице содержимого папки — сведения о сообщениях. Таблицы содержимого используются в основном клиентскими приложениями.
Существует два типа таблиц содержимого папок:
Таблицы стандартного содержимого содержат стандартные сообщения — сообщения, которые можно передавать и делать видимыми для пользователя.
Связанные таблицы содержимого содержат скрытые, не передаваемые сведения, созданные клиентом для определенной цели, например для хранения альтернативного представления стандартного сообщения. Связанные сведения создаются путем передачи флага 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 также можно использовать для включения или исключения таблицы содержимого из операции копирования. Если клиент указывает PR_CONTAINER_CONTENTS в параметре lpExcludeProps для IMAPIProp::CopyTo в операции копирования, новая папка или контейнер не будет поддерживать оглавление исходной папки или контейнера.
Таблицы контейнера адресной книги и содержимого папок содержат длинный список обязательных столбцов — столбцов, которые клиенты могут ожидать, чтобы быть доступными после получения таблицы из 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, порядок сортировки можно применить ко всем вложенным папкам в папке.