Открытие сообщения
Область применения: Outlook 2013 | Outlook 2016
Открытие сообщения
Получите идентификатор записи сообщения из одного из следующих источников:
Строка, представляющая сообщение в таблице содержимого родительской папки. Дополнительные сведения о работе с таблицей содержимого папки см. в разделе Таблицы содержимого.
Член lpEntryIDструктуры NEWMAIL_NOTIFICATION , отправляемый с новым уведомлением по почте. Дополнительные сведения о получении и обработке уведомлений см. в разделе Обработка уведомлений.
Вызов метода IMAPIProp::GetProps сообщения, запрашивающего свойство PR_ENTRYID (PidTagEntryId).
Вызовите один из следующих методов OpenEntry , чтобы открыть сообщение, задав lpEntryID для идентификатора записи сообщения:
Самый быстрый метод можно использовать только для входящих сообщений и включает вызов метода IMAPIFolder::OpenEntry папки получения. Следующий самый быстрый метод, вызывающий метод IMsgStore::OpenEntry хранилища сообщений, можно использовать для всех сообщений, так как является самым медленным методом, вызывая IMAPISession::OpenEntry.
Примечание.
Папки и таблицы их содержимого можно закрыть в любое время, не затрагивая сообщения, которые были открыты из них.
Открытие сообщения, сохраненного на диске
Вызовите StgOpenStorage , чтобы получить указатель интерфейса IStorage , передав имя файла сообщения для параметра pwcsName .
LPSTORAGE pStorage = NULL; HRESULT hr = StgOpenStorage (L"MESSAGE.MSG", NULL, STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, NULL, 0, &pStorage);
Вызовите OpenIMsgOnIStg , чтобы получить указатель интерфейса IMessage для доступа к сообщению.
LPMESSAGE pMessage = NULL; LPMALLOC pMalloc = MAPIGetDefaultMalloc(); hr = OpenIMsgOnIStg (NULL, MAPIAllocateBuffer, MAPIAllocateMore, MAPIFreeBuffer, pMalloc, NULL, pStorage, NULL, 0, 0, &pMessage);