Открыть сервис

Simple MAPI

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

История

Simple MAPI был разработан корпорацией Microsoft в начале 1990-х годов как часть более широкой платформы MAPI, предназначенной для унификации обмена сообщениями в операционных системах Windows. Полная спецификация MAPI (Extended MAPI) представляла собой сложный объектно-ориентированный интерфейс, ориентированный на разработчиков почтовых клиентов и серверов. Simple MAPI, напротив, создавался как лёгкая альтернатива для обычных приложений (текстовых редакторов, офисных пакетов, бухгалтерских программ), которым требовалась базовая возможность отправки электронных писем.

Первая версия Simple MAPI была включена в состав Windows 3.1 и Microsoft Mail. В последующих версиях Windows, включая Windows 95, Windows 98, Windows NT 4.0 и Windows 2000, интерфейс оставался доступным, но его функциональность практически не расширялась. С появлением более современных технологий, таких как MAPI over HTTP и Graph API, Simple MAPI постепенно устаревал, однако продолжал поддерживаться в системах Windows вплоть до Windows 10 и Windows 11 для обеспечения обратной совместимости.

Архитектура и принцип работы

Simple MAPI реализован как набор функций, экспортируемых библиотекой динамической компоновки (DLL) — обычно mapi32.dll. Приложение, использующее Simple MAPI, вызывает эти функции, которые, в свою очередь, взаимодействуют с установленным почтовым клиентом (например, Microsoft Outlook, Outlook Express, Mozilla Thunderbird) через так называемый «провайдер MAPI» (MAPI provider). Провайдер — это компонент, который адаптирует вызовы Simple MAPI к конкретному почтовому приложению.

Основные функции Simple MAPI делятся на три группы:

  • Функции для отправки и получения сообщений: MAPISendMail, MAPISendDocuments, MAPIReadMail, MAPIFindNext, MAPIResolveName.
  • Функции для работы с адресной книгой: MAPIAddress, MAPIDetails, MAPIBrowse.
  • Вспомогательные функции: MAPILogon, MAPILogoff, MAPIFreeBuffer.

При вызове MAPILogon приложение устанавливает сеанс связи с почтовым клиентом. В зависимости от настроек, пользователю может быть предложено ввести пароль или выбрать профиль. После успешного входа приложение может отправлять письма, используя MAPISendMail, которая принимает структуру MapiMessage, содержащую поля: тема, тело письма (в виде простого текста), список получателей, вложения и флаги.

Основные возможности

Simple MAPI предоставляет ограниченный, но достаточный для многих задач набор возможностей:

  • Отправка сообщений: приложение может создать и отправить письмо с темой, текстом, получателями (включая копии и скрытые копии) и вложениями.
  • Получение сообщений: приложение может читать письма из почтового ящика, извлекая тему, текст, отправителя и вложения.
  • Работа с адресной книгой: приложение может отображать диалог выбора адресата из адресной книги почтового клиента, разрешать имена в адреса и получать подробную информацию о контакте.
  • Автоматизация: приложение может отправлять письма без участия пользователя (например, для автоматической отправки отчётов), если почтовый клиент настроен соответствующим образом.

Ограничения

Simple MAPI имеет ряд существенных ограничений по сравнению с Extended MAPI:

  • Только простой текст: тело сообщения поддерживается только в формате обычного текста (plain text). Отправка HTML-писем или вложений с форматированием не предусмотрена.
  • Ограниченная работа с вложениями: вложения поддерживаются, но их количество и размер могут быть ограничены почтовым клиентом.
  • Нет поддержки сложных почтовых операций: отсутствуют функции для работы с папками, правилами, календарями, задачами и другими объектами, доступными в Extended MAPI.
  • Зависимость от почтового клиента: работа Simple MAPI полностью зависит от установленного и настроенного почтового клиента. Если клиент не установлен или не зарегистрирован как MAPI-провайдер, вызовы функций завершаются ошибкой.
  • Однопоточность: Simple MAPI не поддерживает многопоточность, что может вызывать блокировки приложения при длительных операциях.
  • Отсутствие поддержки Unicode: в классической реализации Simple MAPI строки передаются в кодировке ANSI (Windows-1251 для русского языка), что может вызывать проблемы с отображением символов, не входящих в эту кодировку.

Применение

Simple MAPI нашёл широкое применение в корпоративной среде, особенно в 1990-х и начале 2000-х годов. Типичные сценарии использования:

  • Отправка отчётов и документов из офисных приложений (например, Microsoft Word, Excel) по электронной почте.
  • Автоматическая отправка уведомлений из бухгалтерских и складских систем.
  • Интеграция с системами документооборота, где требовалось отправлять счета или акты.
  • Создание простых почтовых клиентов или утилит для массовой рассылки.

В современных приложениях Simple MAPI часто заменяется более современными API, такими как MAPI over HTTP (для Microsoft Exchange), Graph API (для Microsoft 365) или SMTP-библиотеками (например, System.Net.Mail в .NET). Однако в некоторых унаследованных (legacy) системах, особенно в государственных учреждениях и крупных предприятиях, Simple MAPI продолжает использоваться.

Примеры использования

В среде разработки на C++ или Visual Basic вызов Simple MAPI выглядит следующим образом:

```cpp

include <mapi.h>

// Отправка простого письма HINSTANCE hMAPI = LoadLibrary("mapi32.dll"); if (hMAPI) { LPMAPISENDMAIL lpMAPISendMail = (LPMAPISENDMAIL)GetProcAddress(hMAPI, "MAPISendMail"); if (lpMAPISendMail) { MapiMessage msg = {0}; msg.lpszSubject = "Тестовое письмо"; msg.lpszNoteText = "Это тело письма."; MapiRecipDesc recip = {0}; recip.ulRecipClass = MAPI_TO; recip.lpszName = "user@example.com"; msg.nRecipCount = 1; msg.lpRecips = &recip; lpMAPISendMail(0, 0, &msg, MAPI_DIALOG | MAPI_LOGON_UI, 0); } FreeLibrary(hMAPI); } ```

Безопасность и совместимость

При использовании Simple MAPI в современных версиях Windows могут возникать проблемы с безопасностью. Некоторые почтовые клиенты, особенно Microsoft Outlook, требуют специальных настроек для разрешения вызовов из внешних приложений. Например, в Outlook может быть включена защита от автоматической отправки писем (Outlook Object Model Guard), которая блокирует вызовы Simple MAPI без явного разрешения пользователя. Кроме того, в Windows 10 и 11 библиотека mapi32.dll может быть перенаправлена на MAPI32.dll из состава Outlook, что иногда приводит к несовместимости с другими почтовыми клиентами.

Источники

  • Microsoft Developer Network (MSDN): «Simple MAPI» (документация по API).
  • Microsoft Knowledge Base: статьи об использовании Simple MAPI в различных версиях Windows.
  • Книга «Programming Microsoft MAPI» (автор: Michael L. H. Smith, 1998).
  • Документация по Windows SDK: раздел «Messaging API (MAPI)».
  • Статья «Simple MAPI Overview» на сайте Microsoft Docs.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →