Microsoft Outlook Development Technologies
To enhance Outlook functionality or interface other applications with Outlook, you need to know the Outlook Object Model and the key technologies listed below.
Outlook Object Model
Each version of Outlook adds onto the object model. The easiest way to browse the object model is to start VBA in Outlook, then press F2 to bring up the object browser. Switch to the Outlook library, then select any class to see its properties, events, and methods. Press F1 to get the Help topic related to any class member.
The object model reference is also available online on MSDN:
For a visual representation of the object model, see:
For a tutorial on the object model, see:
These technologies can help you build Outlook client applications. Outlook is not suitable to automate from a server or a Windows service; see:
Use VBA to add functionality for your personal use or to prototype functionality that will eventually be incorporated into an add-in or custom form. See:
Custom Outlook forms
Custom forms are user interface templates that, when properly published, can also run code to enhance the functionality of individual Outlook items. The code behind Outlook forms is written in VBScript. See:
COM add-ins, which integrate tightly with Outlook, are the best way to distribute code that you may have prototyped in VBA. See:
Introduced in Outlook 2007, form regions combine with add-ins to provide new user interface design and coding possibilities to Outlook items, without the need to use published custom forms. See:
Custom task panes
For Outlook 2007
Introduced in Outlook 2007, custom task panes allow the developer to add a custom panel to the Outlook Explorer or Inspector window. See:
For Outlook 2000 – 2007
This is a solution of Add-in Express that provides richer capabilities for positioning custom task panes in all Outlook versions: in 4 edges of Outlook explorer, inspector and Reading pane; replacing the explorer's list of items, replacing the inspector body and the entire Reading pane; below the Navigation pane / Outlook bar and To-Do bar.
Folder home pages
A folder home page (or FHP) is a web page displayed in an Explorer window in Outlook using a folder's WebViewURL and WebViewOn properties. The Outlook Today page used for the root folder of the default information store is an example of a folder home page. FHPs for default folders can be managed with Group Policy; my Outlook 2007 programming book includes an example of an FHP that configures a custom rule when Outlook starts up. See:
Additional Outlook technologies
These technologies are less commonly used in Outlook integration scenarios.
Outlook Integration API
In addition to the Outlook object model, Outlook also exposes a number of additional APIs that allow third-party developers to extend Outlook 2003 or later using C++ or Delphi. To download the entire reference for Outlook 2007 and see what's new for Outlook 2007, see:
The Account Management API provides access to user account information and notifications of account changes:
The Offline State API supports Outlook callbacks, notifying clients of changes in a user's connection state in Outlook—for example, from being offline to being online in Outlook.
The Free/Busy API allows mail provides to expose free/busy status information about specific user accounts within a specific time range.
The MAPI-MIME Conversion API supports conversion between MIME objects and MAPI messages.
The Store API provides miscellaneous functionality to developers of MAPI store providers.
According to Microsoft's Stephen Griffin, the Indexing Status feature for Outlook 2007 works only against .pst and Exchange stores; no documentation is available on how to implement it for third-party stores.
The Replication API allows a MAPI transport provider to replicate data between a dedicated .pst file and a server or other external data source. To make this work, you need a "wrapped" .pst file.
The Data Degradation Layer provides the ability to hide the underlying native character format of an Outlook object, allowing a client to access the object in a preferred character format rather than in the object's native character format (Outlook 2007 only):
The Attachment Security API allows an application to verify whether an attachment is blocked by Outlook security (Outlook 2007 only):
More useful articles from the Outlook 2007 Auxiliary Reference:
Alternative Microsoft APIs
Outlook data -- including hidden properties, items, and folders -- can also be accessed by through these programming interfaces:
While Outlook data can be exposed in Access, this technique has major limitations. See:
Other alternative APIs
These programming libraries wrap Extended MAPI to make it more accessible. Redemption also dupliicates almost all of the functionality of CDO 1.21 and exposes the Exchange includes features to help in a way that makes provide Outlook data -- including hidden properties, items, and folders -- can also be accessed by through these programming interfaces:
- Outlook Redemption - also duplicates most of the functionality of CDO 1.21 and exposes features of the Incremental Change Synchronization (ICS) API for Exchange mailbox and public folders
- MAPI33 - for .NET languages only
- Maclean MAPI (MMAPI) - SDK designed for building email migration, email archiving, email analytics, and electronic discovery applications. Can process Exchange stores, .pst files, and .msg files. Supports multi-threading.
Security policy labels
Security policy modules help control classification levels within an organization. See:
For Visual FoxPro:
Also see the individual technology pages listed to the left for samples using specific Outlook technologies.
Component set for customizing Outlook 2000 – 2010 with version-neutral COM add-ins, advanced Outlook regions and custom task panes. .NET and VCL editions are available.
Component suite for .NET development that includes methods to import .msg format data from file or stream without Outlook installed and export Outlook messages to .mht and .eml formats. Includes an Outlook control that can accept Outlook data via drag-and-drop.
Build forms that can be filled in by keyboard, handwriting, or speech recognition and synchronized to Outlook contacts, appointments, or tasks or to XML or databases.
Generic mechanism for adding Exchange/Outlook client extensions that perform actions (built in Visual Basic) when you open or close messages, based on a particular e-mail address in the From field on the message.
Perl script to read free/busy details published locally with .vfb files by Outlook's Internet Free/Busy feature and compile them into a web view of multiple calendars.
Updated free tool for digging deeply into the Outlook & Exchange folder and item structure.
COM-based ActiveX .dll to read data from .msg files saved by Outlook. Does not require Outlook or MAPI components be installed on the client workstation. For both COM and .Net programming environments.
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.
Perform updates of all kinds on Outlook data without programming -- replace, append, copy data from field to field. Supports custom forms and fields. Previews all changes before making them final.
ActiveX control that provides a full year view of Outlook appointments, with different colors for categories. Setup program builds a web page to display the planner view of any calendar folder in Outlook as a folder home page.