|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
Outlook Items and Fields
Last modified: August 25, 2009
Applies to: Office 2010 | Outlook 2010 | Visual Studio
Microsoft Outlook provides item types that are specialized for their functionality (for example, mail items, appointments, contacts, tasks, and notes). Outlook provides standard fields for each type of item, commonly referred to as built-in fields. Outlook also allows users to create custom fields, commonly referred to as user-defined fields. Each field is associated with a data type and a value. Examples of data types are Currency, Date/Time, Duration, Integer, Keywords, and Text. Users can define custom fields by using the Forms Designer in Outlook.
At the programmability level, each item is represented by an IMessage object. Each user-defined field is associated with a field definition and a value.
A field definition includes the name, data type, and other information about the field. For each item, Outlook stores the definitions of all user-defined fields in the PidLidPropertyDefinitionStream property of the corresponding IMessage object. The PidLidPropertyDefinitionStream property contains a binary stream known as PropertyDefinition that contains the field definitions. For more information about stream structures for field definitions, see Stream Structures.
Each user-defined field of an item has a value that is stored in a corresponding named property. That named property is in the PS_PUBLIC_STRINGS property set, and has a Unicode character string as the property name. The data type of the property corresponds to the type of the field. If the property is not present in the IMessage object, Outlook assumes a reasonable default value for the property. For example, for a string type, Outlook assumes an empty string if the property is not present.