MAPI

MAPI (англ. Messaging Application Programming Interface) — проприетарное API, основанное на COM-модели, а также программный интерфейс обработки сообщений от компании Microsoft, позволяющий приложениям работать с различными системами передачи электронных сообщений. MAPI позволяет получать, читать, создавать, отправлять сообщения, присоединять к ним файлы, получать доступ к присоединенным файлам и т. д.

Примерами приложений, использующих MAPI, являются Microsoft MAPI Controls и Microsoft Outlook.

Архитектура MAPI

MAPI обеспечивает единообразные способы взаимодействия приложений со множеством различных систем передачи электронных сообщений. Подсистема MAPI включает в себя:

  • программные интерфейсы;
  • спулер MAPI — отдельный процесс, посылающий сообщения в систему передачи электронных сообщений и принимающий от неё сообщения;
  • общий интерфейс пользователя — диалоговые окна, при помощи которых пользователь может найти адрес, создать и отправить сообщение.

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

Сообщения создаются при помощи форм, путём ввода информации пользователем или программно, без участия пользователя. Перед отправкой сообщения поставщик хранилища сообщений проверяет уникальность каждого адресата и наличие всей необходимой для передачи сообщения информации. В случае успешной проверки, сообщение помещается в очередь исходящих сообщений. Если хранилище сообщений имеет сильную связь (то есть может связываться с ним напрямую, без использования интерфейса MAPI) с поставщиком транспорта и сообщение не требует дополнительной обработки, то оно посылается поставщику транспорта без использования спулера. В остальных случаях спулер при необходимости производит обработку сообщения и, основываясь на адресе получателя, находит подходящий для отправки сообщения поставщик транспорта.

Интерфейсы MAPI

Имеется несколько клиентских интерфейсов MAPI:

  • MAPI — основной интерфейс, основан на технологии COM. Остальные API являются прослойкой между клиентским приложением и MAPI.
  • Simple MAPI — содержит набор функций, обеспечивающих базовый уровень функциональности. Рекомендуется использовать только для обратной совместимости со старыми приложениями.
  • Common Messaging Calls (CMC) — кроссплатформенное API, основанное на программном интерфейсе X.400 (XAPIA). Содержит набор функций для добавления в приложение простых возможностей работы с сообщениями.
  • Collaboration Data Objects (CDO) Library (предыдущие версии назывались OLE Messaging Library, Active Messaging Library) — содержит объекты OLE-автоматизации для приёма и отправления электронной почты и работы с папками и с адресной книгой.

Формы

Формы MAPI предназначены для создания и просмотра сообщений. Для каждого класса сообщений необходима своя форма. MAPI определяет несколько классов сообщений и реализует формы для их просмотра. Каждая форма реализуется в виде исполняемого COM-сервера, называемого сервером форм. Для использования формы приложение через интерфейс форм MAPI обращается к менеджеру форм, который загружает необходимый сервер форм и устанавливает связь между ним и вызывающим приложением.

Поставщики услуг

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

  • Контейнер адресной книги — содержит элементы адресной книги; поставщик адресной книги может иметь один или несколько контейнеров адресной книги.
  • Вложение — содержит дополнительные данные, связанные с сообщением.
  • Элемент управления — кнопки, вызывающие обработку при их нажатии.
  • Список рассылки — описывает группировку индивидуальных адресатов сообщений.
  • Папка — содержит сообщения и контейнеры сообщений.
  • Регистрация — обрабатывает информацию о событиях и запросы клиентов.
  • Адресат сообщения — описывает индивидуального адресата сообщения.
  • Сообщение — содержит информацию, которую можно послать адресатам при помощи системы электронных сообщений.
  • Хранилище сообщений — иерархическая база данных сообщений.
  • Поставщик — обрабатывает запуск и остановку поставщика.
  • Захват спулера — производит специальную обработку входящих и исходящих сообщений.
  • Состояние — обеспечивает доступ к состоянию поставщика услуг.
  • Таблица — обеспечивает доступ к данным объекта в виде строк и столбцов, аналогично таблицы базы данных.

Open Source MAPI

До недавних пор Open Source реализация MAPI была не полной. Но на данный момент существует как минимум три open source проекта, работающих над реализацией протокола MAPI в библиотеках свободного и открытого ПО (FOSS) для последующего использования в других open source приложениях.

Этот список включает проект OpenMapi[1], MAPI4Linux от компании Zarafa (англ.) (также является частью OpenMapi) и libmapi[2], как часть проекта OpenChange[3], который в свою очередь используется в другом OpenChange подпроекте с названием Evolution-MAPI.[4] Evolution-MAPI — это агент (connector provider), который может быть установлен в популярном open source клиенте Evolution groupware.

Примечания

Ссылки