mapi(7)

Name
mapi — Definition for "Messaging Application Programming Interface"

Definition
MAPI (Messaging API) can have many different meanings. As abstracta:

•   The concept of the hierarchial organization into containers, tables, contents and properties. Typical containers are stores and folders, typical contents are messages, recipients, attachments.

•   More concrete variations, such as the set of "well-known" properties like, for example, subject, modification date, body, etc., and the semantics expected of them.

•   Optionally, the profile configuration structure present in some MAPI client implementations, comprised of profiles, providers, services, profile sections, sessions and their associated properties. A server generally does not know or need to know about these.

•   A specification of types and functions to make use of any of these concepts in a programming language.

As an implementation or part thereof:

•   (Seemingly the most common meaning of "MAPI"!) The MSMAPI interface for programming in C and/or C++ that comes with the Windows operating system/Office package, with types like "IMAPIFolder" and "IMessage", functions like "MAPILogonEx" or "IMessage::GetProperties", and identifiers like PR_SUBJECT.

•   The Office VBA interface for programming in VisualBasic, with types like "Outlook.MailItem", object properties like "MailItem.Subject".

•   The collection of wire protocols used for communication with Exchange Server. It has colloquially been referred to as "MAPI/RPC" or "MAPI protocol", but detail-oriented readers will get know the actual parts instead: the Remote Operations (ROP/OXCROPS) protocol, the EMSMDB v1 protocol, the NSPI protocol, the MAPI Extensions For HTTP protocol (MAPIHTTP, MH), and all the serialized representations of MAPI data structures.

Gromox implementation
Gromox does not offer an MSMAPI-style programming API for the C or C++ language environments; the types and functions that are exposed in .h/.hpp files are intended for its own use only and are not considered public let alone constant over time.

Gromox offers interfacing at the network level, e.g. via exchange_emsmdb(4gx)/http(8gx) for the Exchange protocol formats, or via exmdb_provider(4gx) and zcore(8gx) using its own wire formats.

Gromox offers a somewhat MSMAPI-resembling interface for programming in PHP. This is a set of 119 freestanding functions that implement the concepts of stores, folders, messages, etc.