Поделиться через


Открытие сообщения

Область применения: Outlook 2013 | Outlook 2016

Открытие сообщения

  1. Получите идентификатор записи сообщения из одного из следующих источников:

    • Строка, представляющая сообщение в таблице содержимого родительской папки. Дополнительные сведения о работе с таблицей содержимого папки см. в разделе Таблицы содержимого.

    • Член lpEntryIDструктуры NEWMAIL_NOTIFICATION , отправляемый с новым уведомлением по почте. Дополнительные сведения о получении и обработке уведомлений см. в разделе Обработка уведомлений.

    • Вызов метода IMAPIProp::GetProps сообщения, запрашивающего свойство PR_ENTRYID (PidTagEntryId).

  2. Вызовите один из следующих методов OpenEntry , чтобы открыть сообщение, задав lpEntryID для идентификатора записи сообщения:

Самый быстрый метод можно использовать только для входящих сообщений и включает вызов метода IMAPIFolder::OpenEntry папки получения. Следующий самый быстрый метод, вызывающий метод IMsgStore::OpenEntry хранилища сообщений, можно использовать для всех сообщений, так как является самым медленным методом, вызывая IMAPISession::OpenEntry.

Примечание.

Папки и таблицы их содержимого можно закрыть в любое время, не затрагивая сообщения, которые были открыты из них.

Открытие сообщения, сохраненного на диске

  1. Вызовите StgOpenStorage , чтобы получить указатель интерфейса IStorage , передав имя файла сообщения для параметра pwcsName .

     LPSTORAGE pStorage = NULL;
     HRESULT hr = StgOpenStorage (L"MESSAGE.MSG", NULL,
                                 STGM_TRANSACTED |
                                 STGM_READWRITE |
                                 STGM_SHARE_EXCLUSIVE,
                                 NULL, 0, &pStorage);
    
    
  2. Вызовите OpenIMsgOnIStg , чтобы получить указатель интерфейса IMessage для доступа к сообщению.

     LPMESSAGE pMessage = NULL;
     LPMALLOC pMalloc = MAPIGetDefaultMalloc();
     hr = OpenIMsgOnIStg (NULL, MAPIAllocateBuffer, MAPIAllocateMore,
                         MAPIFreeBuffer, pMalloc, NULL, pStorage,
                         NULL, 0, 0, &pMessage);