MAPI

## MAPI MAPI — MAPI and CDO constants |

## Synopsis

    enum        MapiAccess;
    enum        CdoInstanceTypes;
    enum        MapiObjectType;
    enum        MapiPrDisplayType;
    enum        MapiPrRecipientType;
    enum        MapiPrMessageFlags;
    enum        MapiPrAction;
    enum        MapiPrActionFlag;
    enum        MapiPrFlagStatus;
    enum        MapiPrPriority;
    enum        MapiPrSensitivity;
    enum        MapiPrImportance;

## Description

## Details

### enum MapiAccess

    typedef enum {
    	MAPI_ACCESS_MODIFY            = (1 << 0),
    	MAPI_ACCESS_READ              = (1 << 1),
    	MAPI_ACCESS_DELETE            = (1 << 2),
    	MAPI_ACCESS_CREATE_HIERARCHY  = (1 << 3),
    	MAPI_ACCESS_CREATE_CONTENTS   = (1 << 4),
    	MAPI_ACCESS_CREATE_ASSOCIATED = (1 << 5)
    } MapiAccess;

These are the bits in a folder's `PR_ACCESS` property.

`MAPI_ACCESS_MODIFY` | ability to modify objects
`MAPI_ACCESS_READ` | ability to the folder contents
`MAPI_ACCESS_DELETE` | ability to delete objects
`MAPI_ACCESS_CREATE_HIERARCHY` | ability to create subfolders
`MAPI_ACCESS_CREATE_CONTENTS` | ability to create new objects
`MAPI_ACCESS_CREATE_ASSOCIATED` | ability to create hidden objects

### enum CdoInstanceTypes

    typedef enum {
    	cdoSingle    = 0,	/* non-recurring appointment */
    	cdoMaster    = 1,	/* recurring appointment */
    	cdoInstance  = 2,	/* single instance of recurring appointment */
    	cdoException = 3	/* exception to recurring appointment */
    } CdoInstanceTypes;

These are the possible values of the `E2K_PR_CALENDAR_INSTANCE_TYPE` property.

`cdoSingle` | The object represents a non-recurring event.
`cdoMaster` | The object is the master appointment for a recurring event.
`cdoInstance` | The object is a single instance of a recurring event (which also has a `cdoMaster` object).
`cdoException` | The object is an exception to a recurring event.

### enum MapiObjectType

    typedef enum {
    	MAPI_STORE    = 0x1,	/* Message Store */
    	MAPI_ADDRBOOK = 0x2,	/* Address Book */
    	MAPI_FOLDER   = 0x3,	/* Folder */
    	MAPI_ABCONT   = 0x4,	/* Address Book Container */
    	MAPI_MESSAGE  = 0x5,	/* Message */
    	MAPI_MAILUSER = 0x6,	/* Individual Recipient */
    	MAPI_ATTACH   = 0x7,	/* Attachment */
    	MAPI_DISTLIST = 0x8,	/* Distribution List Recipient */
    	MAPI_PROFSECT = 0x9,	/* Profile Section */
    	MAPI_STATUS   = 0xA,	/* Status Object */
    	MAPI_SESSION  = 0xB,	/* Session */
    	MAPI_FORMINFO = 0xC	/* Form Information */
    } MapiObjectType;

This is an enumeration of the various types of MAPI objects. They show up in various properties. (Several of these types are never exposed via WebDAV.)

`MAPI_STORE` | a message store (eg, the user's mailbox)
`MAPI_ADDRBOOK` | an address book
`MAPI_FOLDER` | a folder
`MAPI_ABCONT` | an address book container
`MAPI_MESSAGE` | a "message" (which includes contacts, appointments, and tasks)
`MAPI_MAILUSER` | an individual recipient of a mail message
`MAPI_ATTACH` | an attachment
`MAPI_DISTLIST` | a distribution list recipient of a mail message
`MAPI_PROFSECT` | a profile section
`MAPI_STATUS` | a status object
`MAPI_SESSION` | a MAPI session
`MAPI_FORMINFO` | form information

### enum MapiPrDisplayType

    typedef enum {
    /*  For address book contents tables */
    	DT_MAILUSER         = 0x00000000,
    	DT_DISTLIST         = 0x00000001,
    	DT_FORUM            = 0x00000002,
    	DT_AGENT            = 0x00000003,
    	DT_ORGANIZATION     = 0x00000004,
    	DT_PRIVATE_DISTLIST = 0x00000005,
    	DT_REMOTE_MAILUSER  = 0x00000006,
    /*  For address book hierarchy tables */
    	DT_MODIFIABLE       = 0x00010000,
    	DT_GLOBAL           = 0x00020000,
    	DT_LOCAL            = 0x00030000,
    	DT_WAN              = 0x00040000,
    	DT_NOT_SPECIFIC     = 0x00050000,
    /*  For folder hierarchy tables */
    	DT_FOLDER           = 0x01000000,
    	DT_FOLDER_LINK      = 0x02000000,
    	DT_FOLDER_SPECIAL   = 0x04000000
    } MapiPrDisplayType;

This is an enumeration of various types of objects that may be represented by icons in various parts of Outlook. We only use it for the recipient types in a server-side rule.

`DT_MAILUSER` | in a server-side rule, used to indicate a single recipient
`DT_DISTLIST` | in a server-side rule, used to indicate a distribution list
`DT_FORUM` |
`DT_AGENT` |
`DT_ORGANIZATION` |
`DT_PRIVATE_DISTLIST` |
`DT_REMOTE_MAILUSER` |
`DT_MODIFIABLE` |
`DT_GLOBAL` |
`DT_LOCAL` |
`DT_WAN` |
`DT_NOT_SPECIFIC` |
`DT_FOLDER` |
`DT_FOLDER_LINK` |
`DT_FOLDER_SPECIAL` |

### enum MapiPrRecipientType

    typedef enum {
    	MAPI_ORIG = 0,
    	MAPI_TO   = 1,
    	MAPI_CC   = 2,
    	MAPI_BCC  = 3
    } MapiPrRecipientType;

These are the categories of recipient for a message, used in server-side rules.

`MAPI_ORIG` | "From" address? (not used in Connector)
`MAPI_TO` | a "To" recipient
`MAPI_CC` | a "Cc" recipient
`MAPI_BCC` | a "Bcc" recipient

### enum MapiPrMessageFlags

    typedef enum {
    	MAPI_MSGFLAG_READ            = 0x0001,
    	MAPI_MSGFLAG_UNMODIFIED      = 0x0002,
    	MAPI_MSGFLAG_SUBMIT          = 0x0004,
    	MAPI_MSGFLAG_UNSENT          = 0x0008,
    	MAPI_MSGFLAG_HASATTACH       = 0x0010,
    	MAPI_MSGFLAG_FROMME          = 0x0020,
    	MAPI_MSGFLAG_ASSOCIATED      = 0x0040,
    	MAPI_MSGFLAG_RESEND          = 0x0080,
    	MAPI_MSGFLAG_RN_PENDING      = 0x0100,
    	MAPI_MSGFLAG_NRN_PENDING     = 0x0200,
    	MAPI_MSGFLAG_ORIGIN_X400     = 0x1000,
    	MAPI_MSGFLAG_ORIGIN_INTERNET = 0x2000,
    	MAPI_MSGFLAG_ORIGIN_MISC_EXT = 0x8000
    } MapiPrMessageFlags;

These are the message flags in the `PR_MESSAGE_FLAGS` field. `MAPI_MSGFLAG_READ` is the only one that can be modified via WebDAV.

`MAPI_MSGFLAG_READ` | Message has been marked read
`MAPI_MSGFLAG_UNMODIFIED` | Message has not been modified since creation
`MAPI_MSGFLAG_SUBMIT` | Message is marked for submission
`MAPI_MSGFLAG_UNSENT` | Message has not yet been sent (ie, it's a draft)
`MAPI_MSGFLAG_HASATTACH` | Has attachments
`MAPI_MSGFLAG_FROMME` | Message was sent by this user
`MAPI_MSGFLAG_ASSOCIATED` | "Associated" (hidden) message
`MAPI_MSGFLAG_RESEND` | Includes a request for resend
`MAPI_MSGFLAG_RN_PENDING` | Read report needs to be sent
`MAPI_MSGFLAG_NRN_PENDING` | Non-read report needs to be sent
`MAPI_MSGFLAG_ORIGIN_X400` | Message arrived over an X.400 link
`MAPI_MSGFLAG_ORIGIN_INTERNET` | Message arrived over the internet
`MAPI_MSGFLAG_ORIGIN_MISC_EXT` | Message arrived over non-X.400, non-internet link

### enum MapiPrAction

    typedef enum {
    	MAPI_ACTION_REPLIED   = 261,
    	MAPI_ACTION_FORWARDED = 262
    } MapiPrAction;

Indicates that an action has been taken on a message. (There are other values besides these.)

`MAPI_ACTION_REPLIED` | Message was replied to.
`MAPI_ACTION_FORWARDED` | Message was forwarded.

### enum MapiPrActionFlag

    typedef enum {
    	MAPI_ACTION_FLAG_REPLIED_TO_SENDER = 102,
    	MAPI_ACTION_FLAG_REPLIED_TO_ALL    = 103,
    	MAPI_ACTION_FLAG_FORWARDED         = 104,
    } MapiPrActionFlag;

Indicates additional information beyond `PR_ACTION`.

`MAPI_ACTION_FLAG_REPLIED_TO_SENDER` | Reply was sent only to sender
`MAPI_ACTION_FLAG_REPLIED_TO_ALL` | Reply was sent to all recipients
`MAPI_ACTION_FLAG_FORWARDED` | Message was forwarded

### enum MapiPrFlagStatus

    typedef enum {
    	MAPI_FOLLOWUP_UNFLAGGED = 0,
    	MAPI_FOLLOWUP_COMPLETED = 1,
    	MAPI_FOLLOWUP_FLAGGED   = 2
    } MapiPrFlagStatus;

Flag-for-followup status

`MAPI_FOLLOWUP_UNFLAGGED` | Message is not flagged
`MAPI_FOLLOWUP_COMPLETED` | Message was flagged, and is now completed
`MAPI_FOLLOWUP_FLAGGED` | Message is flagged, but not completed

### enum MapiPrPriority

    typedef enum {
    	MAPI_PRIO_URGENT    =  1,
    	MAPI_PRIO_NORMAL    =  0,
    	MAPI_PRIO_NONURGENT = -1
    } MapiPrPriority;

Indicates the priority of a message.

`MAPI_PRIO_URGENT` | "Urgent" priority
`MAPI_PRIO_NORMAL` | "Normal" priority
`MAPI_PRIO_NONURGENT` | "Non-urgent" priority

### enum MapiPrSensitivity

    typedef enum {
    	MAPI_SENSITIVITY_NONE                 = 0,
    	MAPI_SENSITIVITY_PERSONAL             = 1,
    	MAPI_SENSITIVITY_PRIVATE              = 2,
    	MAPI_SENSITIVITY_COMPANY_CONFIDENTIAL = 3
    } MapiPrSensitivity;

Indicates the sensitivity of a message.

`MAPI_SENSITIVITY_NONE` | Not sensitive.
`MAPI_SENSITIVITY_PERSONAL` | Message is personal.
`MAPI_SENSITIVITY_PRIVATE` | Message is private.
`MAPI_SENSITIVITY_COMPANY_CONFIDENTIAL` | Message is compant-confidential.

### enum MapiPrImportance

    typedef enum {
    	MAPI_IMPORTANCE_LOW    = 0,
    	MAPI_IMPORTANCE_NORMAL = 1,
    	MAPI_IMPORTANCE_HIGH   = 2
    } MapiPrImportance;

Indicates the importance of a message.

`MAPI_IMPORTANCE_LOW` | Low importance.
`MAPI_IMPORTANCE_NORMAL` | Normal importance.
`MAPI_IMPORTANCE_HIGH` | High importance.