IMessage

4/8/2010

The IMessage interface manages messages, attachments, and recipients.

Methods in Vtable Order

IMessage methods Description

IMessage::GetAttachmentTable

Returns the message's attachment IMAPITable object.

IMessage::OpenAttach

Opens an IAttach object.

IMessage::CreateAttach

Creates a new IAttach object.

IMessage::DeleteAttach

Deletes an IAttach object.

IMessage::GetRecipientTable

Returns the message's recipient IMAPITable object.

IMessage::ModifyRecipients

Adds, deletes, and modifies a message's list of recipients, which is contained in an ADRLIST structure.

IMessage::SubmitMessage

Saves all changes to the message, and marks it as ready for sending.

IMessage::SetReadFlag

Not supported — do not use.

Properties

The properties listed in the following table are required on messages at some point during their life cycle. Read-only properties are set by the Transport Provider.

Required properties for messages of all classes Access

PR_ENTRYID

Read-only

PR_LAST_MODIFICATION_TIME

Read-only

PR_MESSAGE_CLASS

Read/write

PR_MESSAGE_FLAGS

Read/write

PR_MESSAGE_SIZE

Read-only

PR_PARENT_ENTRYID

Read-only

PR_RECIPIENT_TYPE

Read-only

PR_SENDER_EMAIL_ADDRESS

Read-only

PR_SENDER_NAME

Read-only

The properties listed in the following tables are read-only to clients, with the exception of PR_BODY. Clients construct this property when they process a report.

Properties for report messages Access

PR_BODY

Read/write

PR_MESSAGE_CLASS

Read-only

PR_MESSAGE_DELIVERY_TIME

Read-only

PR_SENDER_EMAIL_ADDRESS

Read-only

PR_SENDER_NAME

Read-only

PR_SUBJECT

Read-only

Properties for message recipients Access Required or optional

PR_ADDRTYPE

Read-only

Required

PR_EMAIL_ADDRESS

Read-only

Optional

PR_ENTRYID

Read-only

Required

Remarks

IMessage is implemented by Message Store Providers, is called by Message Client applications, and is exposed by IMessage objects.

The IMessage interface identifier is IID_Message, and its pointer type is LPMESSAGE.

Code Example

The following code example demonstrates how to use IMAPIProp::GetProps, which IMessage inherits from IMAPIProp.

Note

To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

HRESULT GetPropsExample(IMessage * pMsg) 
{
    HRESULT           hr = E_FAIL;
    SPropValue * rgprops = NULL;
    ULONG       rgTags[] = {3, PR_SENDER_EMAIL_ADDRESS, PR_SUBJECT, PR_IMPORTANCE};
    ULONG         cCount = 0;

    // Get the message's properties.
    hr = pMsg->GetProps((LPSPropTagArray) rgTags, MAPI_UNICODE, &cCount, &rgprops);

    // Access the properties.
    if (SUCCEEDED(hr)) 
    {        
        // Check that the ulPropTag member of each property value is of the property type requested, and that it does not have a value of PT_ERROR.
        if (rgprops[0].ulPropTag == PR_SENDER_EMAIL_ADDRESS) 
            DEBUGMSG(TRUE, (L"From: %s \r\n", rgprops[0].Value.lpszW));

        if (rgprops[1].ulPropTag == PR_SUBJECT) 
            DEBUGMSG(TRUE, (L"Subject: %s \r\n", rgprops[1].Value.lpszW));

        if (rgprops[2].ulPropTag == PR_IMPORTANCE) 
            DEBUGMSG(TRUE, (L"Importance: %d \r\n", rgprops[2].Value.ul));
        
        // Free the returned SPropValue structure.
        MAPIFreeBuffer(rgprops);
    }

    return hr;
}

Requirements

Header mapidefs.h
Library cemapi.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2002 and later, Smartphone 2002 and later

See Also

Other Resources

MAPI Interfaces
Messaging