Platform SDK: MAPI

About MAPI Features

MAPI has several key features that enable it to provide a consistent way for developers to work with and use different messaging systems in a seamless fashion. These features are:

Because MAPI is an open programming interface, it provides services in a generic way, allowing its users to add any necessary customization now and in the future. The users of the MAPI interface include all levels and types of applications, also called client applications or clients, and service providers, or driver-like components that translate the features of a specific messaging system into features that any MAPI client application can access. Applications with such diverse messaging needs as a word processing application requiring only the ability to send documents and a workgroup application requiring the ability to share and store different types of data can use the MAPI programming interface to fulfill their needs. In fact, any application that has to either exchange or store information in a particular format can benefit from using the MAPI programming interface. Any service provider can use the interface to expose the unique features of its messaging system, selecting those features that provide the most benefit to application users.

MAPI provides separation between the programming interface used by the front-end messaging client applications and the programming interface used by the back-end service providers. Separating the client interface from the service provider interface enables a single application to use multiple messaging systems and a single service provider to be used by multiple applications. Every component works with a common, Microsoft Windows-based user interface. This is a great benefit to users. Users can select from a variety of systems, depending on their needs at any one time, and be able to work consistently with each selected system, thereby providing true independence from specific messaging systems.

For example, one messaging client application can be used to receive messages from a fax, a bulletin board system, a host-based messaging system, and a LAN-based system. Messages from all of these systems can be placed in a single location upon arrival, or universal Inbox. Having a single application handle all of these systems lessens the cost of development, user training, and system administration.

Separating the client interface from the provider interface removes any programming dependencies placed on the application by the messaging system and vice versa. Developers of client applications and service providers code to a standard set of MAPI features, rather than a diverse set of application-specific or messaging system-specific features. Developers focus only on their component, whether it be a client or service provider, and MAPI handles the rest, thereby reducing development time and costs.

The MAPI programming interface provides a comprehensive set of features. MAPI is aimed at the powerful, new market of workgroup applications — applications that communicate with such different messaging systems as fax, DEC All-In-1, voice mail, and public communications services such as AT&T Easylink Services, CompuServe, and MCI MAIL. The MAPI interface allows service providers to be made available for all of these systems.

Because workgroup applications demand more of their messaging systems, MAPI offers much more than basic messaging in the programming interface and supports more than local area network (LAN)–based messaging systems. Applications can, for example, format text for a single message with a variety of fonts and present to their users a customized view of messages that have been filtered, sorted, or preprocessed.

MAPI is built into the Microsoft Windows family of operating systems; it is a component of the Microsoft® Windows® 95 operating system and Microsoft® Windows NT® operating system. Because MAPI is an integrated part of the operating system, developers of 16-bit and 32-bit Windows-based applications can have access to a consistent interface. This approach is similar to the approach used by the Windows printing system. Just as a word-processing program can print to many different printers through the Windows printing system as long as the necessary drivers are installed, so can any MAPI-compliant application communicate with any messaging system as long as the appropriate service providers are installed.

The programming interface and subsystem contained in the DLL are based on the object oriented concepts introduced with another integrated part of the Windows operating systems, OLE. MAPI-compliant objects conform to the OLE methodology known as the Component Object Model (COM). COM objects implement a set of methods that belong to one or more interfaces, or collections of related functions that define how objects behave and operate within the COM world. Users of COM objects access them only through pointers to these interfaces.

In addition to the DLL and programming interface, several other components are included with the operating system as part of MAPI. There are standard messaging client applications that demonstrate different levels of messaging support. There are sample address book, message store, and transport providers written in both C and C++. You can use these components either for testing your own client or service provider or as a learning tool.

MAPI provides cross platform support through such industry standards as SMTP, X.400, and Common Messaging Calls (CMC). MAPI applications can be run on all 16-bit Windows 3.x platforms and both 16-bit and 32-bit platforms on Windows 95 and Windows NT. MAPI is the messaging component of an open architecture standard known as the Microsoft Windows Open Services Architecture (WOSA). WOSA standards exist or are being developed in the areas of database, directory, security, and messaging technology among others. WOSA programming interfaces allow developers to create front- and back-end components with the confidence that these products can be easily connected in a distributed computing environment.