Поделиться через


Таблицы MAPI

Область применения: Outlook 2013 | Outlook 2016

Таблица MAPI — это объект MAPI, который используется для просмотра коллекции свойств, принадлежащих другим объектам MAPI определенного типа. Таблицы MAPI структурированы в формате строк и столбцов, каждая строка представляет объект и каждый столбец, представляющий свойство объекта. Одним из свойств, обычно включенных в каждую строку, является свойство PR_ENTRYID (PidTagEntryId), идентификатор, который можно использовать для открытия и изменения объекта.

Так как строки содержат значения свойств, получение строки из таблицы аналогично получению набора свойств непосредственно из объекта, представленного строкой. Обе операции приводят к получению массива значений свойств. Разница main заключается в обработке длинных строковых и двоичных свойств. Для включения в таблицу некоторые средства реализации таблиц усекивают эти свойства до 255 байт. При извлечении непосредственно из объекта полное значение всегда доступно.

Таблицы реализуются поставщиками адресной книги и хранилища сообщений, а также MAPI в зависимости от типа таблицы и объектов в ней. Поставщик хранилища сообщений реализует папки и таблицу содержимого для каждой папки, которая содержит сведения о сообщениях в папке. Поставщик адресной книги реализует контейнеры адресных книг и таблицу иерархии, показывающую их организацию. MAPI реализует несколько разных таблиц, некоторые для использования клиентскими приложениями, некоторые для использования поставщиками услуг, а некоторые для использования обоими. Таблица состояния уникальна тем, что MAPI в конечном счете предоставляет таблицу, но строки состоят из вкладов от всех типов поставщиков услуг в дополнение к MAPI.

На следующем рисунке показано одно из часто используемых таблиц в MAPI: для отображения содержимого папки. Справа отображается два сообщения, которые могут отображаться в обычном клиентском приложении для обмена сообщениями. Отображение содержит четыре фрагмента информации о каждом сообщении: отправитель, получатель, тема и текст сообщения. Каждый фрагмент информации соответствует свойству сообщения.

Слева — представление таблицы содержимого, включающее эти два сообщения. В то время как таблица содержимого может содержать десять строк, так как папка содержит десять сообщений, каждая строка содержит много более трех столбцов, это конкретное представление ограничено только двумя строками и тремя столбцами.

В следующей таблице показаны свойства, составляющие набор столбцов для представления таблицы.

Свойство Описание
PR_SENDER_NAME (PidTagSenderName)
Имя отправителя
PR_ORIGINAL_DELIVERY_TIME (PidTagOriginalDeliveryTime)
Дата и время отправки сообщения
PR_SUBJECT (PidTagSubject)
Строка темы сообщения

Обратите внимание, что набор свойств, отображаемых в сообщении, отличается от набора столбцов, отображаемых в таблице. Исполнитель таблицы, в данном случае поставщик хранилища сообщений, предоставляет набор столбцов по умолчанию в порядке по умолчанию. Клиент может изменить этот набор столбцов, запрашивая дополнительные столбцы или отклоняя столбцы по умолчанию, а также запрашивать их упорядочение определенным образом. Клиент также может упорядочить строки, сортируя их по значению одного или нескольких столбцов.

Использование таблицы для отображения содержимого папки

Использование таблицы для отображения содержимого папки

Существует два интерфейса для работы с таблицами:

  • IMAPITable: IUnknown предоставляет клиентам и поставщикам служб представление базовых данных таблицы только для чтения, позволяя им просматривать и изменять только презентацию. Несколько пользователей могут получить доступ к одинаковым данным одновременно с IMAPITable. IMAPITable реализуется MAPI и поставщиками услуг.

  • ITableData: IUnknown предоставляет клиентам и поставщикам услуг доступ на чтение и запись к базовым данным таблицы, позволяя им вносить постоянные изменения. IMAPITable реализуется MAPI и используется в основном поставщиками услуг, которые обращаются к ней путем вызова функции CreateTable . Реализация ITableData содержит все данные для таблицы и все связанные с ней ограничения в памяти, что делает ее непригодной для использования с очень большими таблицами. Составные ограничения и сложные операции, такие как классификация, не поддерживаются.

См. также