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


IMAPISession::OpenEntry

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

Открывает объект и возвращает указатель интерфейса для дополнительного доступа.

HRESULT OpenEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,
  ULONG ulFlags,
  ULONG FAR * lpulObjType,
  LPUNKNOWN FAR * lppUnk
);

Параметры

cbEntryID

[в] Число байтов в идентификаторе записи, на который указывает параметр lpEntryID .

lpEntryID

[в] Указатель на идентификатор записи открываемого объекта.

lpInterface

[в] Указатель на идентификатор интерфейса (IID), представляющий интерфейс, используемый для доступа к открытому объекту. Передача NULL возвращает стандартный интерфейс объекта. Например, если открываемый объект является сообщением, стандартным интерфейсом является IMessage; для папок это IMAPIFolder. Стандартными интерфейсами для объектов адресной книги являются IDistList для списка рассылки и IMailUser для пользователя обмена сообщениями.

ulFlags

[в] Битовая маска флагов, управляющая способом открытия объекта. Можно использовать следующие флаги:

MAPI_BEST_ACCESS

Запрашивает открытие объекта с использованием максимального сетевого разрешения, разрешенного для пользователя, и максимального доступа к клиентскому приложению. Например, если клиент имеет разрешение на чтение и запись, объект должен быть открыт с разрешением на чтение и запись; Если клиент имеет разрешение только для чтения, объект должен быть открыт с разрешением только для чтения.

MAPI_CACHE_OK

Используйте все средства, включая автономные адресные книги, для разрешения имен.

MAPI_CACHE_ONLY

Используйте только автономную адресную книгу для разрешения имен. Например, этот флаг можно использовать, чтобы разрешить клиентскому приложению открывать глобальный список адресов (GAL) в режиме кэшированного обмена и получать доступ к записи в этой адресной книге из кэша без создания трафика между клиентом и сервером. Этот флаг поддерживается только поставщиком адресной книги Exchange.

MAPI_DEFERRED_ERRORS

Позволяет OpenEntry успешно возвращать объект, возможно, до того, как объект будет полностью доступен вызывающему клиенту. Если объект недоступен, последующий вызов объекта может вызвать ошибку.

MAPI_MODIFY

Запрашивает разрешение на чтение и запись. По умолчанию объекты открываются с разрешением только для чтения, и клиенты не должны работать при условии предоставления разрешения на чтение и запись.

MAPI_NO_CACHE

Не используйте автономную адресную книгу для разрешения имен. Этот флаг поддерживается только поставщиком адресной книги Exchange.

SHOW_SOFT_DELETES

Отображение элементов, которые в настоящее время помечены как обратимо удаленные (то есть находятся на этапе хранения удаленного элемента).

lpulObjType

[out] Указатель на тип открытого объекта.

lppUnk

[out] Указатель на указатель на открытый объект.

Возвращаемое значение

S_OK

Объект был успешно открыт.

MAPI_E_NO_ACCESS

Предпринята попытка изменить объект, доступный только для чтения, или предпринята попытка доступа к объекту, для которого у пользователя недостаточно разрешений.

MAPI_E_NOT_FOUND

Нет объекта, связанного с идентификатором записи, переданным в параметре lpEntryID .

MAPI_E_UNKNOWN_ENTRYID

Идентификатор записи, переданный в параметре lpEntryID , имеет неузнаваемый формат. Обычно это значение возвращается, если поставщик услуг, содержащий объект, не открыт.

Замечания

Метод IMAPISession::OpenEntry открывает хранилище сообщений или объект адресной книги, возвращая указатель на интерфейс, который можно использовать для доступа к объекту .

Примечания для вызывающих методов

Важно!

При открытии записей папок в общедоступном хранилище, таких как папки и сообщения, используйте IMsgStore::OpenEntry вместо IMAPISession::OpenEntry. Это гарантирует правильную работу общедоступных папок при определении нескольких учетных записей Exchange в профиле.

Вызовите IMAPISession::OpenEntry, только если вы не знаете, какой тип открываемого объекта. Если вы знаете, что открываете папку или сообщение, вызовите IMsgStore::OpenEntry. Если вы знаете, что открываете контейнер адресной книги, пользователя сообщений или список рассылки, вызовите IAddrBook::OpenEntry. Эти более конкретные методы работают быстрее , чем IMAPISession::OpenEntry.

MAPI открывает все объекты с разрешением только для чтения, если вы не задали флаг MAPI_MODIFY или MAPI_BEST_ACCESS в параметре ulFlags . Установка одного из этих флагов не гарантирует определенный тип доступа; Предоставленные разрешения зависят от поставщика услуг, уровня доступа и объекта . Чтобы определить уровень доступа открытого объекта, получите его свойство PR_ACCESS_LEVEL (PidTagAccessLevel).

Вызов IMAPISession::OpenEntry и задание lpEntryID для указания идентификатора записи хранилища сообщений аналогично вызову метода IMAPISession::OpenMsgStore с MDB_NO_DIALOG флагом. Параметры флага также эквивалентны, за исключением того, что для запроса разрешения на чтение и запись с помощью OpenMsgStore необходимо задать флаг MDB_WRITE вместо MAPI_MODIFY.

Проверьте значение, возвращаемое в параметре lpulObjType , чтобы определить, является ли возвращаемый тип объекта ожидаемым. Если тип объекта не является ожидаемым, приведите указатель из параметра lppUnk к указателю соответствующего типа. Например, если вы открываете папку, приведите lppUnk к указателю типа LPMAPIFOLDER.

Справочные материалы по MFCMAPI

Пример кода MFCMAPI указан в приведенной ниже таблице.

Файл Функция Comment
MAPIFunctions.cpp
CallOpenEntry
MFCMAPI использует метод IMAPISession::OpenEntry для открытия объекта.

См. также

IAddrBook::OpenEntry

IDistList : IMAPIContainer

IMailUser : IMAPIProp

IMAPIFolder : IMAPIContainer

IMAPISession::OpenMsgStore

IMessage: IMAPIProp

IMsgStore::OpenEntry

IMAPISession: IUnknown

Mfcmapi (en) � �������� ������� ����