IMAPISession::OpenMsgStore
Aplica-se a: Outlook 2013 | Outlook 2016
Abre um repositório de mensagens e retorna um ponteiro IMsgStore para obter mais acesso.
HRESULT OpenMsgStore(
ULONG_PTR ulUIParam,
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
LPMDB FAR * lppMDB
);
Parâmetros
ulUIParam
[in] Um identificador para a janela pai da caixa de diálogo endereço comum e outras exibições relacionadas.
cbEntryID
[in] A contagem de bytes no identificador de entrada apontada pelo parâmetro lpEntryID .
Lpentryid
[in] Um ponteiro para o identificador de entrada do repositório de mensagens a ser aberto. O parâmetro lpEntryID não deve ser NULL.
lpInterface
[in] Um ponteiro para o IID (identificador de interface) que representa a interface a ser usada para acessar o repositório de mensagens. Passar NULL faz com que o parâmetro lppMDB retorne um ponteiro para a interface padrão de um repositório de mensagens (IMsgStore).
ulFlags
[in] Um bitmask de sinalizadores que controla como o objeto é aberto. Os seguintes sinalizadores podem ser usados:
MAPI_BEST_ACCESS: solicita que o repositório de mensagens seja aberto com as permissões máximas de rede permitidas para o usuário e as permissões máximas do aplicativo cliente. Por exemplo, se o cliente tiver permissão de leitura/gravação, o repositório de mensagens deverá ser aberto com permissão de leitura/gravação; se o cliente tiver permissão somente leitura, o repositório de mensagens deverá ser aberto com permissão somente leitura.
MAPI_DEFERRED_ERRORS: permite que o OpenMsgStore retorne com êxito, possivelmente antes que o repositório de mensagens esteja totalmente disponível para o cliente de chamada. Se o repositório de mensagens não estiver disponível, fazer uma chamada de objeto subsequente poderá gerar um erro.
MDB_NO_DIALOG: impede a exibição de caixas de diálogo de logon. Se esse sinalizador estiver definido e o OpenMsgStore tiver informações de configuração insuficientes para abrir o repositório de mensagens sem a ajuda do usuário, ele retornará MAPI_E_LOGON_FAILED. Se esse sinalizador não estiver definido, o provedor do repositório de mensagens poderá solicitar que o usuário corrija um nome ou senha ou execute outras ações necessárias para estabelecer uma conexão com o repositório de mensagens.
MDB_NO_MAIL: o repositório de mensagens não deve ser usado para enviar ou receber emails. Quando esse sinalizador é definido, o MAPI não notifica o spooler MAPI de que esse repositório de mensagens está sendo aberto.
MDB_ONLINE: no Modo exchange armazenado em cache, um cliente ou provedor de serviços pode chamar esse método com MDB_ONLINE para substituir a conexão com o repositório de mensagens local e abrir o repositório no servidor remoto. Não é possível abrir um exchange store no modo armazenado em cache e no modo não armazenado em cache ao mesmo tempo na mesma sessão MAPI. Se você já tiver aberto o arquivo de cache mensagens, você deve fechar o repositório antes de abri-lo com esse sinalizador ou abrir uma nova sessão MAPI onde você pode abrir o armazenamento do Exchange no servidor remoto usando esse sinalizador.
MDB_TEMPORARY: instrui o MAPI de que o repositório de mensagens não é permanente e não deve ser adicionado à tabela do repositório de mensagens. Esse sinalizador é usado para fazer logon no repositório de mensagens para que as informações possam ser recuperadas programaticamente da seção de perfil.
MDB_WRITE: solicita permissão de leitura/gravação para o repositório de mensagens.
lppMDB
[out] Ponteiro para um ponteiro do repositório de mensagens.
Valor de retorno
S_OK
O repositório de mensagens foi aberto com êxito.
MAPI_E_NO_ACCESS
Foi feita uma tentativa de acessar um repositório de mensagens para o qual o usuário tem permissões insuficientes.
MAPI_E_NOT_FOUND
O repositório de mensagens indicado por lpEntryID não existe.
MAPI_E_UNKNOWN_CPID
O servidor não está configurado para dar suporte à página de código do cliente.
MAPI_E_UNKNOWN_LCID
O servidor não está configurado para dar suporte às informações de localidade do cliente.
MAPI_W_ERRORS_RETURNED
A chamada foi bem-sucedida, mas o provedor do repositório de mensagens tem informações de erro disponíveis. Quando esse aviso é retornado, a chamada deve ser tratada como bem-sucedida. Para obter as informações de erro do provedor, chame o método IMAPISession::GetLastError . Para testar esse aviso, use a macro HR_FAILED . Para obter mais informações, confira Usando macros para tratamento de erros.
Comentários
O método IMAPISession::OpenMsgStore abre um armazenamento de mensagens específico.
Notas para chamadores
O nível de permissão padrão para armazenamentos de mensagens é somente leitura. Se você definir o sinalizador de MDB_WRITE, talvez ainda não seja concedida permissão de leitura/gravação. O nível final de acesso que o MAPI atribui ao repositório de mensagens depende do nível de permissão, do próprio repositório de mensagens e do provedor do repositório de mensagens.
Se você chamar OpenMsgStore para abrir um repositório de mensagens com permissão somente leitura, o seguinte ocorrerá:
A propriedade PR_STORE_SUPPORT_MASK da loja (PidTagStoreSupportMask) não terá seu STORE_MODIFY_OK e STORE_CREATE_OK bits definidos.
As chamadas para abrir uma das mensagens ou pastas do repositório de mensagens usando IMAPISession::OpenEntry com o conjunto de sinalizadores MAPI_MODIFY falharão.
As chamadas para abrir uma das propriedades das mensagens ou pastas do repositório de mensagens usando IMAPIProp::OpenProperty com o sinalizador MAPI_MODIFY falharão.
As chamadas para qualquer um dos seguintes métodos falharão:
As chamadas para os métodos a seguir falharão se o destino da mensagem copiada for somente leitura, se o destino for o mesmo que o repositório de mensagens de origem ou se for outro repositório somente leitura.
Referência do MFCMAPI
Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.
Arquivo | Função | Comentário |
---|---|---|
MAPIStoreFunctions.cpp |
CallOpenMsgStore |
O MFCMAPI usa o método IMAPISession::OpenMsgStore para abrir um repositório de mensagens. |