Outlook Object Model Overview
To develop add-ins for Microsoft Office Outlook, you can interact with the objects that are provided by the Outlook object model. The Outlook object model provides classes that represent items in the user interface. For example, the Application class represents the entire application, the MAPIFolder class represents a folder that contains e-mail messages or other items, and the MailItem class represents an e-mail message.
This topic provides a brief overview of some of the main classes in the Outlook object model. For complete documentation for the Outlook object model, see the MSDN sections Outlook 2007 Developer Reference and Welcome to the Microsoft Office Outlook 2003 VBA Language Reference.
For a related video demonstration, see How Do I: Use Outlook to Create a Custom Task Report?.
Outlook provides many classes with which you can interact. To use the object model effectively, you should be familiar with the following top-level classes:
The Application class represents the Outlook application, and it is the highest-level class in the Outlook object model. Some of the most important members of this class include:
The CreateItem method which you can use to create a new item such as an e-mail message, task, or appointment.
The Explorers property, which you can use to access the windows that display the contents of a folder in the Outlook user interface (UI).
The Inspectors property, which you can use to access the windows that display the contents of a single item, such as an e-mail message or meeting request.
To get an instance of the Application class, use the Application property of the ThisAddin class.
When you create a new Outlook add-in project, Visual Studio Tools for Office automatically creates a ThisAddIn.vb or ThisAddIn.cs code file in your new project. This code file defines a ThisAddin class that inherits from OutlookAddIn. You can access the members of the OutlookAddIn class by using the keywords Me (in Visual Basic) or this (in C#) within the ThisAddIn class. Code that is outside the ThisAddIn class can access the ThisAddIn object by using the static Globals.ThisAddIn property.
To help avoid security warnings when you use properties and methods that are blocked by the Outlook object model guard, get Outlook objects from the ThisAddIn object. For more information, see Specific Security Considerations for Office Solutions.
The Explorer class represents a window that displays the contents of a folder that contains items such as e-mail messages, tasks, or appointments. The Explorer class includes methods and properties that you can use to modify the window, and events that are raised when the window changes.
To get an Explorer object, do one of the following:
The Inspector class represents a window that displays a single item such as an e-mail message, task, or appointment. The Inspector class includes methods and properties that you can use to modify the window, and events that are raised when the window changes.
To get an Inspector object, do one of the following:
T:Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox corresponds to the Inbox folder in Outlook.
The MailItem class represents an e-mail message. MailItem objects are usually in folders, such as Inbox, Sent Items, and Outbox. MailItem exposes properties and methods that can be used to create and send e-mail messages.
For an example that shows how to create an e-mail message, see How to: Create an E-Mail Item.
The AppointmentItem class represents a meeting, a one-time appointment, or a recurring appointment or meeting in the Calendar folder. The AppointmentItem class includes methods that perform actions such as responding to or forwarding meeting requests, and properties that specify meeting details such as the location and time.
For an example that shows how to create an appointment, see How to: Create a Meeting Request.
The ContactItemclass represents a contact in the Contacts folder. ContactItem objects contain a variety of contact information for the people they represent, such as street addresses, e-mail addresses, and phone numbers.
For an example that shows how to create a new contact, see How to: Add an Entry to Outlook Contacts. For an example that shows how to search for an existing contact, see How to: Search for a Specific Contact.
For information about the classes you can use in the Outlook object model, see the following sets of documentation:
The first link provides information about the classes and interfaces in the primary interop assembly for Outlook. The other links provide information about the Outlook object model as it is exposed to Visual Basic for Applications (VBA) code. Each set of documentation has advantages and disadvantages for developers who are using Visual Studio Tools for Office.
Primary Interop Assembly Reference
This documentation describes all of the types in the Outlook primary interop assembly that you can use in Visual Studio Tools for Office projects:
It describes the types in the primary interop assembly for Outlook 2007. Therefore, if you are developing an Outlook 2003 add-in, you will not be able to use some of classes and members that appear in this documentation. For descriptions of types and members that are available for Outlook 2003, refer to the Microsoft Office Outlook 2003 VBA Language Reference.
It does not provide any code examples at this time.
All of the objects and members in the VBA reference correspond to classes and members in the primary interop assembly that you use in Visual Studio Tools for Office projects. For example, the Inspector object in the Outlook VBA documentation corresponds to the Inspector class in the primary interop assembly.
The VBA reference has the following advantages:
It provides code examples for most members.
The VBA reference has the following disadvantages:
It provides syntax and code examples for VBA only. To use the code examples in a Visual Studio Tools for Office project, you must translate the VBA code to Visual Basic or Visual C#.
Additional Types in Primary Interop Assemblies
The primary interop assemblies contain many types that are not available to VBA. These additional types help translate objects in the COM-based object model of Outlook to managed code, are not intended to be used directly in your code.
For more information, see Architecture of the Outlook PIA.