IMessage
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
Send Feedback on this topic to the authors