Share via

Messaging Application Programming Interface (MAPI)

Messaging Application Programming Interface (MAPI)

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release. This topic provides information about using Messaging Application Programming Interface (MAPI) to develop messaging applications.


MAPI can be used to access items and folders within public and private stores, as well as the properties stored along with each item. MAPI is used by various industry-standard e-mail clients, such as the Microsoft® Exchange client, all versions of Microsoft Outlook®, and Outlook Express. Developers can create clients that use MAPI, as well as MAPI servers and MAPI forms handlers. The information here only applies to MAPI client applications that access Exchange.


MAPI is a mature mechanism used to access information in Exchange, and provides some capabilities available in no other API. However, MAPI does not work well outside an intranet, maintains an open connection for the duration of the MAPI session, and can be difficult to learn.

Functional Criteria

Criteria Messaging Application Programming Interface (MAPI)
Application Domain Client applications that use MAPI access user mailbox and public folder information stored in Exchange, and user directory information stored in Active Directory. Client applications that use MAPI are typically e-mail clients and applications that require complex e-mail processing.
Major Objects MAPI objects are all obtained through the IMAPISession object. The session object provides the client access to objects for working with MAPI profiles, status, message service provider administration, message store tables, and address books. The message store table contains objects for the message store, folders, messages, attachments, and recipients. The address book tables contain objects for messaging users and distribution lists.
Data Access Model MAPI represents messages and users in hierarchical object fashion.
Threading Models No specific threading prohibitions. However, applications that use free-threading should avoid sharing MAPI object instances among threads due to the high costs of marshalling the object. MAPI and MAPI service providers use free-threading.
Application Architectures MAPI client applications are typically Windows forms-based client applications. However, N-tier applications can be written that use MAPI.
Remote Usage MAPI uses Remote Procedure Calls (RPC) to communicate with the Exchange server. Typically RPC is intentionally blocked from passing through Internet firewalls.
Transactions MAPI does not support transactions.
Management Capabilities Information about this is not yet available here.
Availability A MAPI stub currently ships with all versions of Windows. Microsoft Office installs its own MAPI subsystem when installing Outlook. No changes to MAPI are anticipated at this time.

Development Criteria

Criteria Messaging Application Programming Interface (MAPI)
Languages and Tools You can only directly access MAPI by using C or C++.
Managed Implementation MAPI is an unmanaged component. Use of MAPI is not supported under the COM Interoperability layer of Visual Studio .NET and the .NET Framework. MAPI can be run on many 16- and 32-bit versions of Windows.
Scriptable MAPI cannot be directly used in scripts.
Test/Debug Tools No special debugging tools are needed to debug applications that use MAPI.
Expert Availability Expert MAPI programmers can be difficult to find, and learning the technology can take a significant amount of time. In addition to the Microsoft communities, there are a relatively small number of high-quality third-party Web sites that provide helpful MAPI development information.
Available Information Both Microsoft and third-party books describing MAPI programming are available. For more information about MAPI, see the MSDN Web site Online link.
Developer/Deployment Licensing No special licensing is required for developing by using MAPI.

Security Criteria

Criteria Messaging Application Programming Interface (MAPI)
Design-Time Permissions The developer must have permissions to access the data in the Exchange store. Exchange stores user and distribution list information in Active Directory, so developers who create MAPI client applications that access that information must have the ability to retrieve and set that information.
Setup Permissions Setting up MAPI-based applications typically requires the user to be a local administrator, or to have rights to install software.
Run-Time Permissions Running a MAPI-based application usually only requires that the user have sufficient permissions to access the data on the Exchange store.
Built-in Security Features MAPI profiles can be password protected on most platforms.
Security Monitoring Features Information about this is not yet available here.

Deployment Criteria

Criteria Messaging Application Programming Interface (MAPI)
Server Platform Requirements The Exchange servers on which user data is stored for users of the MAPI client application must be properly configured to allow access by MAPI clients.
Client Platform Requirements The client application installer should verify that the proper version of MAPI is available on the computer, and that it is properly configured via the MAPISVC.INF file.
Deployment Methods Applications that use MAPI can be deployed to client computers by using standard software distribution technologies.
Deployment Notes The installer should verify that the correct version of MAPI is available.

Send us your feedback about the Microsoft Exchange Server 2003 SDK.

This topic last updated: June 2006

Build: June 2007 (2007.618.1)

© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.