IMessage

Send Feedback

The IMessage interface is used for managing messages, attachments, and recipients.

Methods in Vtable Order

IMessage methods Description
GetAttachmentTable Returns the message's attachment table.
OpenAttach Opens an attachment.
CreateAttach Creates a new attachment.
DeleteAttach Deletes an attachment.
GetRecipientTable Returns the message's recipient table.
ModifyRecipients Adds, deletes, or modifies message recipients.
SubmitMessage Saves all changes to the message and marks it as ready for sending.
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 all 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, implemented by message store providers and called by client applications, is exposed by message objects. Its interface identifier is IID_Message, and its pointer type is LPMESSAGE.

Code Example

The following code example demonstrates how to use IMessage::GetProps.

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 that were just retrieved.
    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

Pocket PC: Pocket PC 2002 and later
Smartphone: Smartphone 2002 and later
OS Versions: Windows CE 3.0 and later
Header: mapidefs.h
Library: cemapi.lib

See Also

MAPI Interfaces | Messaging

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.