mapi(7)

Name

mapi — Message Application Programming Interface

Description

MAPI is a programming language API for storing and exchanging messages, contacts and calendars.

Data model

The MAPI data model is a hierarchial one, similar to LDAP or a filesystem.

A store is a container for a tree-based hierarchy of objects, similar to a filesystem. Each object in the hierarchy has an identifier by which it can be referred to, the so-called entry ID. The entry ID is unique within the scope of a store and can be thought of something like a filesystem's inode number.

Each object can have a number of attributes (key-value pairs), so-called properties.

Differences between MSMAPI and MAPI4Linux

•   MAPI4Linux is a C++-only implementation. It is not binary compatible to MSMAPI, but it does remain source compatible to it, so that MAPI programs can, with little extra code, compile with both MSMAPI and M4L.

•   M4L uses multiple virtual inheritance.

•   Many MAPI functions in M4L have additional "const" qualifiers that MSMAPI is lacking. This allows programs to be sure memory is not unexpectedly modified behind the scenes and allows them to pass pointers to read-only memory as well.

•   Some member functions of some M4L MAPI interface classes have default implementations that return an error code. For example, IMAPIProp::GetLastError is provided so that subclasses need not provide the boilerplate themselves repeatedly.

•   M4L's OpenEntry functions accept nullptr for ulType (5th argument); MSMAPI does not specify whether that is permissible or not.