mapi(7)

πŸ“¦
version 3.6 Β· 2 versions
, in alpine 3.24

πŸŽ€ Name πŸŽ€

mapi β€” Definition for "Messaging Application Programming Interface"

okay bestie, yes β€” this is the mapi(7) page from the Gromox developer reference, and we're about to get into the whole "MAPI" identity crisis. Buckle up, it's giving acronym lore πŸ’…βœ¨

πŸ’– 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 to 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 πŸ¦‹

Real talk: Gromox does not offer an MSMAPI-style programming API for the C or C++ language environments. The types and functions exposed in .h/.hpp files are intended for its own use only, and they are not considered public β€” let alone constant over time. No cap, that's the whole situation 😭

Gromox does offer interfacing at the network level, bestie β€” 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. Slay πŸ’…

And it 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. Obsessed with the range, honestly 🫢


source/version: Gromox; date: not listed on this page, so no invented date, periodt. This was the mapi(7) manual β€” signing off with good vibes and zero made-up facts πŸŒˆπŸ’œ

πŸ“¦ where this page comes from