MAPI - FAQs

MAPI FAQs

1) What is MAPI?  

MAPI will generally mean MAPI32.dll, or the APIs contained. It's an API, implemented largely in MAPI32.dll (Messaging Application Programming Interface, 32 bit build). By using this, developers implement a series of Providers. Providers come in three major types, Transport Providers, Message Store Providers, and Address Book Providers. Providers are DLLs that implement a specific pseudo COM API, such as IMessageStore, and the underlying required interfaces, such as IMAPIProp.

2) Then, what is a MAPI Application?
It means any application that uses the MAPI calls. MAPI applications work against sets of data sources grouped into Profiles. Profiles are created, saved, and deleted by the Profile Provider. The Profile Provider is implemented in MAPI32.dll in two forms:

  • The temporary profile provider, which stores profile data in temp files.
  • The normal profile provider, which stores profile data in the registry.

An empty profile gives a MAPI application no data access, so MAPI applications add Providers (also called Services) to the profile. 

3) 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.

4) 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.

5) 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.