More Outlook Resource Sites

Microsoft Developer Network (MSDN)

FAQs and other general resources

Collaboration Data Objects

Originally known as Active Messaging, the Collaboration Data Objects (CDO) library allows you to access the Global Address List and other server objects, in addition to the contents of mailboxes and public folders. It is used for some key Outlook programming tasks, such as displaying an address book for the user to pick from. However, with the advent of the Outlook Email Security Update, CDO is far less useful, and many developers are using Redemption instead in order to avoid the security prompts.

Outlook 2007 adds objects and methods to move a long way toward parity with CDO -- without security prompts. For example, the PropertyAccessor and StorageItem objects provide access to hidden fields and messages.

CDOLive is the premier resource site for Collaboration Data Objects, with samples, articles, lists of undocumented MAPI properties, and a discussion forum.

CDO 1.21 is not officially supported in a .NET Framework environment, although we've seen people use it. See Support Policy for Microsoft Exchange APIs with .NET Framework Applications and FYI: Why are MAPI and CDO 1.21 not supported in managed (.NET) code?.

Documentation
Articles

Top CDO techniques for Outlook applications

More techniques for client-related applications

Discussion
Problems

If you plan to install Outlook 2003 on client machines, you will probably need to update the version of CDO running on your server first. In Exchange 2000 and 2003, you may have server-based applications that use CDO for data access. Once you use Outlook 2003 against an Exchange mailbox, a change takes place in the mailbox properties that is incompatible with CDO. Exchange 2000 or 2003 applications that use CDO to access the mailbox may fail completely if they call the PR_FREEBUSY_ENTRYIDS MAPI property. You can contact Microsoft Product Support Services to obtain a hotfix for your version of Exchange:

Notes

Some confusion exists over other libraries with "CDO" in their name -- CDONTS, CDO for Windows 2000, and CDO for Exchange (2000/2003). The first two can be used for creating and sending messages, but otherwise have little client application in an Outlook programming environment. See:

Availability

CDO is not part of the default Outlook installation.

Collaboration Data Objects, version 1.2.1 is a downloadable version, made available because Outlook 2007 does not include CDO.

For client applications before Outlook 2007, you must install Outlook in order to install CDO. In Outlook 2000 and later versions, CDO is included with Outlook but is not part of the default setup, nor will it install on first run. Therefore, you must explicitly select it during a custom setup or use the Windows Installer object library to programmatically install CDO, as shown in the Items Command Bar COM Add-in sample.

Tools

Exchange Inspector

Free tool for examining the MAPI properties of items in Exchange mailboxes and public folders and in the Global Address List. Triggers Outlook security prompts.

MAPI Editor

Free tool for digging deeply into the Outlook & Exchange folder and item structure. See Announcing MAPI Editor (Formerly MFCMAPI) for what's new. 

MAPIProp

Free COM component designed to read MAPI-properties of CDO and Outlook Object Model objects for Microsoft Outlook 2000, 2002/XP, 2003 without triggering security prompts. Microsoft Visual C++ 6.0 source code included.

MAPIViewer

Provides an Explorer-like interface for browsing MAPI stores and viewing items and their properties. Free.

Outlook Spy

Developer utility for finding out what's going on inside Outlook, via the Outlook object model, CDO and MAPI. You can edit and delete most properties, drag properties from one item to another, copy values to the clipboard, run scripts, monitor events.

Visual MAPI

Automatic code generator for MAPI (i.e. CDO) projects in Visual Basic or VBA. Donationware. Requires the VB 6.0 runtime. 

Samples

CDOLive Code Sample Library

CDO 1.2.1 and CDONTS AppFarm Sample Applications

Bulk Reply Form

Sample Outlook message form demonstrating how to use CDO to get the address of the sender of a message. 

CDO Simple Mail Reader Sample

Built with Delphi

SAMPLE RTFView.exe Rich Text Format Stream Viewer

Visual Basic sample to view a message's Rich Text Format content

Modify Outlook Default Folder Names

A task that requires CDO

Modify Outlook Contact RTF-enabled Flag Macro

GetCalendarLabels()

Function to return calendar color label list

More Information