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


IMAPISession::OpenMsgStore

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

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

HRESULT OpenMsgStore(
  ULONG_PTR ulUIParam,
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,
  ULONG ulFlags,
  LPMDB FAR * lppMDB
);

Параметры

ulUIParam

[в] Дескриптор родительского окна диалогового окна общего адреса и других связанных дисплеев.

cbEntryID

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

lpEntryID

[в] Указатель на идентификатор записи открываемого хранилища сообщений. Параметр lpEntryID не должен иметь значение NULL.

lpInterface

[в] Указатель на идентификатор интерфейса (IID), представляющий интерфейс, используемый для доступа к хранилищу сообщений. Передача NULL приводит к тому, что параметр lppMDB возвращает указатель на стандартный интерфейс для хранилища сообщений (IMsgStore).

ulFlags

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

  • MAPI_BEST_ACCESS: запрашивает открытие хранилища сообщений с максимальными разрешениями сети, разрешенными для пользователя, и максимальными разрешениями клиентского приложения. Например, если клиент имеет разрешение на чтение и запись, хранилище сообщений должно быть открыто с разрешением на чтение и запись. Если клиент имеет разрешение только для чтения, хранилище сообщений должно быть открыто с разрешением только для чтения.

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

  • MDB_NO_DIALOG. Запрещает отображение диалоговых окон входа. Если этот флаг установлен, а у OpenMsgStore недостаточно сведений о конфигурации для открытия хранилища сообщений без помощи пользователя, он возвращает MAPI_E_LOGON_FAILED. Если этот флаг не задан, поставщик хранилища сообщений может предложить пользователю исправить имя или пароль или выполнить другие действия, необходимые для подключения к хранилищу сообщений.

  • MDB_NO_MAIL. Хранилище сообщений не должно использоваться для отправки или получения почты. Если этот флаг установлен, MAPI не уведомляет диспетчер очереди MAPI о том, что это хранилище сообщений открыто.

  • MDB_ONLINE. В режиме кэширования Exchange клиент или поставщик служб может вызвать этот метод с MDB_ONLINE, чтобы переопределить подключение к локальному хранилищу сообщений и открыть хранилище на удаленном сервере. Вы не можете открыть хранилище Exchange в кэшированном режиме и в не кэшированном режиме одновременно в том же сеансе MAPI. Если вы уже открыли хранилище кэшированных сообщений, потребуется его закрыть перед открытием с этим флагом или открыть новый сеанс MAPI, в котором можно будет открыть хранилище Exchange на удаленном сервере с использованием этого флага.

  • MDB_TEMPORARY: указывает MAPI, что хранилище сообщений не является постоянным и не должно быть добавлено в таблицу хранилища сообщений. Этот флаг используется для входа в хранилище сообщений, чтобы данные можно было получить программными средствами из раздела профиля.

  • MDB_WRITE: запрашивает разрешение на чтение и запись в хранилище сообщений.

lppMDB

[out] Указатель на указатель хранилища сообщений.

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

S_OK

Хранилище сообщений было успешно открыто.

MAPI_E_NO_ACCESS

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

MAPI_E_NOT_FOUND

Хранилище сообщений, указанное lpEntryID , не существует.

MAPI_E_UNKNOWN_CPID

Сервер не настроен для поддержки кодовой страницы клиента.

MAPI_E_UNKNOWN_LCID

Сервер не настроен для поддержки сведений о языковом стандарте клиента.

MAPI_W_ERRORS_RETURNED

Вызов выполнен успешно, но у поставщика хранилища сообщений доступны сведения об ошибках. При возврате этого предупреждения вызов должен быть обработан как успешный. Чтобы получить сведения об ошибке от поставщика, вызовите метод IMAPISession::GetLastError . Чтобы проверить наличие этого предупреждения, используйте макрос HR_FAILED . Дополнительные сведения см. в разделе Использование макросов для обработки ошибок.

Замечания

Метод IMAPISession::OpenMsgStore открывает определенное хранилище сообщений.

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

Уровень разрешений по умолчанию для хранилищ сообщений доступен только для чтения. Если вы задали флаг MDB_WRITE, возможно, вам по-прежнему не будет предоставлено разрешение на чтение и запись. Окончательный уровень доступа, который MAPI назначает хранилищу сообщений, зависит от уровня разрешений, самого хранилища сообщений и поставщика хранилища сообщений.

Если вызвать OpenMsgStore , чтобы открыть хранилище сообщений с разрешением только на чтение, произойдет следующее:

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

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

Файл Функция Comment
MAPIStoreFunctions.cpp
CallOpenMsgStore
MFCMAPI использует метод IMAPISession::OpenMsgStore для открытия хранилища сообщений.

См. также