A Glimpse on MAPI tables

1) What do you meant by "MAPI table"?

  • A MAPI table is a MAPI object that is used to view a collection of properties belonging to other MAPI objects of a particular type.

2) How the values are stored and can be used in MAPI table?

  • MAPI tables are structured in a row and column format with each row representing an object and each column representing a property of the object.
  • One of the properties usually included in each row is the PR_ENTRYID property, an identifier that can be used to open and modify the object.
  • Rows contain property values, retrieving a row from a table is similar to getting a set of properties directly from the object that the row represents.
  • Both operations result in the retrieval of a property value array.
  • The main difference is in the handling of long string and binary properties.
  • For inclusion in a table, some table implementers truncate these properties to 255 bytes.
  • When retrieved directly from the object, the full value is always available.

3) In which way usage of MAPI tables are useful?

  • MAPI tables enable client applications and service providers to readily access and manipulate the important properties of many types of objects.
  • Even MAPI tables such as contents tables, provide an alternative way of accessing properties.

Take this case directly a client cannot access an attachment's PR_ATTACH_METHOD property by calling IMAPIProp::GetProps; it must always retrieve the attachment table of the message to which it is attached. PR_ATTACH_METHOD is a required column in all attachment tables.