Opening a message
Applies to: Outlook 2013 | Outlook 2016
To open a message
Retrieve the message's entry identifier from one of the following sources:
The row that represents the message in the contents table of its parent folder. For more information about working with a folder contents table, see Contents Tables.
The lpEntryID member of the NEWMAIL_NOTIFICATION structure that is sent with a new mail notification. For more information about receiving and handling notifications, see Handling Notifications.
A call to the message's IMAPIProp::GetProps method requesting the PR_ENTRYID (PidTagEntryId) property.
Call one of the following OpenEntry methods to open the message, setting lpEntryID to the message's entry identifier:
The fastest method is usable only for incoming messages and involves calling the receive folder's IMAPIFolder::OpenEntry method. The next fastest method, calling the message store's IMsgStore::OpenEntry method, is usable for all messages as is the slowest method, calling IMAPISession::OpenEntry.
Note
Folders and their contents tables can be closed at any time without adversely affecting any of the messages that were opened from within them.
To open a message that has been saved on disk
Call StgOpenStorage to retrieve an IStorage interface pointer, passing the name of the message file for the pwcsName parameter.
LPSTORAGE pStorage = NULL; HRESULT hr = StgOpenStorage (L"MESSAGE.MSG", NULL, STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, NULL, 0, &pStorage);
Call OpenIMsgOnIStg to retrieve an IMessage interface pointer to access the message.
LPMESSAGE pMessage = NULL; LPMALLOC pMalloc = MAPIGetDefaultMalloc(); hr = OpenIMsgOnIStg (NULL, MAPIAllocateBuffer, MAPIAllocateMore, MAPIFreeBuffer, pMalloc, NULL, pStorage, NULL, 0, 0, &pMessage);