About: Extended MAPI

API Type: Mailbox AccessorAPI Interface:  COM-like but not true COM.  MAPI pre-dates COM.
Business Logic: Messages and AddressBook, etc.
Language Support: Unmanaged C++ only.
Direct Property Access:  Yes.
Product Versions: All versions of Outlook and Exchange versions up to 2003.  Also available for download.


MAPI is the root level API and architecture for the Outlook client and its communication to Exchange.  MAPI the API can be used to build client applications that utilize providers to connect to Exchange, or other messaging systems and stores.  MAPI provides basic item access at a very low level - there is no business logic for contacts, tasks, meetings, appointments, etc.  Everything in MAPI is viewed as a message or folder with properties there are no other specialized types in a store.  MAPI the is also an interface and provider architecture for creating bridges between MAPI clients and disperate systems.

Some Points Of Interest:

  • MAPI is an architecture as well an API.
  • MAPI is not supported in a managed process - so, don't use .NET.
  • MAPI is a COM-like API that can only be used from unmanaged C++.
  • MAPI is at the root of OOM and CDO 1.21.
  • MFCMAPI demonstrates MAPI code and can be used as a testing tool.
  • Extended MAPI is a superset of Simple MAPI
  • The term MAPI is often used to describe the Exchange/Outlook specific "Extended MAPI" but it can also apply to the standard "Simple MAPI".  
  • If you have the book Inside MAPI, read Steve Griffin's MAPI Internals blog, review public docs and MFCMAPI code then you will have a good foundation for Extended MAPI development. See below for links.
  • MFCMAPI is an a highly flushed out sample.  If you have issues with your code then see if MFCMAPI reproduces.  If MFCMAPI's code works then look at its source and compare with yours to determine where the two differ. Taking this approach can save you a lot of time and may help keep you from needing to open a support case.   


MAPI Programming Overview

Installing the MAPI Subsystem

How to: Choose a Specific Version of MAPI to Load

Steve Griffin's MAPI Internals
This is the best resource for MAPI development information I know of.

Where Did I Put Those 5.5 SDK Docs?

How Outlook, CDO, MAPI, and Providers Work Together

Differences between CDO, Simple MAPI, and Extended MAPI

MAPI and .Net

MAPI and Impersonation

MAPI Multithreading Rules

The Fifth MAPI Multithreading Rule

Large Samples:

MFCMAPI demonstrates MAPI client code
MFCMAPI is a very large Extended MAPI sample.  If you have problems with your MAPI application then see if it reproduces with MFCMPI and check out its source code.  This sample app was built from more than a decade of cases on Extended MAPI by the messaging developer support team, so it covers most coding scenarios and issues with Extended MAPI development.


Call MrMAPI, That’s My Name, That Name Again Is MrMAPI!

How to use MFCMAPI to create a MAPI profile to connect to Office 365

Also see:

About: Mailbox Accessing APIs

Exchange and Outlook Development Help

Inside MAPI
Inside MAPI is a good book on Extended MAPI.  When this book went out of print a few years ago the price for it jumped up 10 fold for even a used book and it was hard to find an old copy of it anywhere under $300.  This is a book any Extended MAPI developer should look at.  Now Extended MAPI is not used nearly as much and you can buy it for just a few bucks.