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 , чтобы открыть хранилище сообщений с разрешением только на чтение, произойдет следующее:
Свойство PR_STORE_SUPPORT_MASK хранилища (PidTagStoreSupportMask) не будет иметь STORE_MODIFY_OK и STORE_CREATE_OK битов.
Вызовы для открытия одного из сообщений или папок хранилища сообщений с помощью IMAPISession::OpenEntry с установленным флагом MAPI_MODIFY будут завершатся ошибкой.
Вызовы для открытия одного из свойств сообщений или папок хранилища сообщений с помощью IMAPIProp::OpenProperty с флагом MAPI_MODIFY завершатся ошибкой.
Вызовы любого из следующих методов завершатся ошибкой:
Вызовы следующих методов завершатся ошибкой, если место для скопированного сообщения доступно только для чтения, независимо от того, совпадает ли назначение с исходным хранилищем сообщений или другим хранилищем только для чтения.
Справочные материалы по MFCMAPI
Пример кода MFCMAPI указан в приведенной ниже таблице.
Файл | Функция | Comment |
---|---|---|
MAPIStoreFunctions.cpp |
CallOpenMsgStore |
MFCMAPI использует метод IMAPISession::OpenMsgStore для открытия хранилища сообщений. |