Differences between CDO, Simple MAPI, and Extended MAPI


This article describes key differences between CDO (previously known as Active Messaging and OLE Messaging), Simple MAPI, Common Messaging Calls (CMC), and Extended MAPI (usually referred to simply as MAPI).

More Information


Collaboration Data Objects (CDO) was originally called "OLE Messaging" and later "Active Messaging". CDO is a COM wrapper of the MAPI library and can be called from any development language that supports automation. For example, Simple MAPI, CDO is primarily designed for client activities. CDO implements most but not all MAPI functionality, although far more than Simple MAPI. Some activities that can be accomplished using CDO:
  • Log onto the messaging system with specific profiles or with anonymous authentication.
  • Compose messages, address and resolve recipients, send, receive, and read messages, add attachments, automate replies.
  • Manage calendars; create meetings and appointments.
  • Manage folders and messages within the information store.
  • Manage Addresses, especially within the Personal Address Book (PAB).

There are two distinct "flavors" of CDO, the MAPI based CDO.DLL and the SMTP based CDONTS.dll. The CDONTS library allows rendering of selected information into HTML format.

For more information specific to CDO see the following KnowledgeBase articles:
171440 Where to Acquire the Collaboration Data Objects Library

For more information specific to CDONTS see the following KnowledgeBase articles:
186204 HOWTO: Use CDONTS to Collect and Mail Information From a User
177850 INFO: What is the Difference Between CDO 1.2 and CDONTS?


The Messaging Application Program Interface (MAPI) is an extensive set of functions that developers can use to create mail-enabled applications. The full function library is known as MAPI 1.0 or Extended MAPI. Extended MAPI allows complete control over the messaging system on the client computer, creation and management of messages, management of the client mailbox, service providers, and so forth.

Applications that use MAPI directly are written in C or C++.

Simple MAPI

Simple MAPI is a subset of 12 functions, which enable developers to add basic messaging functionality to their Windows-based applications. Simple MAPI includes functions to support sending and receiving messages:
  • Log onto the messaging system.
  • Compose new messages, add and resolve recipients, send messages.
  • Retrieve and read messages from the inbox.
The Simple MAPI functions can be called from any application that supports both making API calls as well as the structures and data-types used by Simple MAPI, such as C, C++, Visual Basic, and Visual Basic for Applications (VBA).

"The MAPI controls included with Microsoft Visual Basic (versions 3 through 6), and the version of MAPI installed by Outlook Express implement Simple MAPI only."

For more information specific to Simple MAPI see the following KnowledgeBase articles:
105964 PC MAPI: Simple MAPI Common Technical Questions and Answer
239576 INFO: Developer Support Limitations with Outlook Express


Common Messaging Calls (CMC) is a library of 10 functions for adding simple messaging capabilities to client applications written in C or C++. CMC is built on top of the core MAPI subsystem so it shares the advantage of messaging system independence. The CMC API is especially valuable because it is also independent of the operating system, therefore useful for cross-platform client applications. CMC also includes support for the X.400 API. The CMC supports three principal tasks:
  • Sending messages
  • Retrieving messages
  • Looking up addressing information
Current versions of the MAPI subsystem do not implement CMC. Do not use CMC to implement messaging solutions.


Platform Software Development Kit (SDK), Messaging and Collaboration Services

The following MSDN topics are helpful to understand the full relationship of these messaging technologies:
  • MAPI Programming Interfaces
  • About the MAPI Subsystem
  • About the MAPI Architecture