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 в библиотеках свободного и открытого ПО (FOSS) для последующего использования в других open source приложениях.

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

Примечания

[править | править код]
  1. OpenMapi.org. Дата обращения: 15 октября 2012. Архивировано 17 февраля 2012 года.
  2. MAPI Library. Дата обращения: 30 июля 2011. Архивировано 15 ноября 2011 года.
  3. OpenChange Архивировано 28 сентября 2004 года.
  4. Gnome Evolution Plugin Архивировано 26 июля 2011 года.