Acessando objetos usando a sessão
Aplica-se a: Outlook 2013 | Outlook 2016
O ponteiro de sessão que você recebe de sua chamada para MAPILogonEx pode ser usado para acessar uma grande variedade de objetos. A tabela a seguir lista os métodos usados para acessar vários objetos:
Object | Método session |
---|---|
Seção Perfil |
IMAPISession::OpenProfileSection |
Repositório de mensagens |
IMAPISession::OpenMsgStore |
Catálogo de endereços |
IMAPISession::OpenAddressBook |
Objeto de administração do serviço de mensagem |
IMAPISession::AdminServices |
Pasta, mensagem, contêiner de catálogo de endereços, lista de distribuição ou usuário de mensagens |
IMAPISession::OpenEntry |
Com o método OpenEntry e um identificador de entrada válido, você pode abrir qualquer catálogo de endereços ou objeto do provedor do repositório de mensagens. Há outros métodos OpenEntry no MAPI, além do método IMAPISession . OpenEntry é implementado nos seguintes objetos:
Object | Method |
---|---|
Objeto de logon do provedor de catálogo de endereços |
IABLogon::OpenEntry |
Catálogo de endereços |
IAddrBook::OpenEntry |
Contêiner do catálogo de endereços |
IMAPIContainer::OpenEntry |
Sessão |
IMAPISession::OpenEntry |
Repositório de mensagens |
IMsgStore::OpenEntry |
Objeto de logon do provedor de armazenamento de mensagens |
IMSLogon::OpenEntry |
Pasta |
IMAPIContainer::OpenEntry |
Objeto support |
IMAPISupport::OpenEntry |
Alguns métodos OpenEntry exigem que um identificador de entrada do objeto seja aberto, assim como IMAPISession::OpenEntry; outros métodos permitem que NULL seja especificado. Um identificador de entrada NULL é interpretado de forma diferente dependendo do objeto. Por exemplo, quando você chama IAddrBook::OpenEntry com um identificador de entrada NULL, MAPI abre o contêiner raiz do catálogo de endereços. O método OpenEntry do repositório de mensagens se comporta de forma semelhante; ela abre a pasta raiz do repositório de mensagens. IMAPIContainer::OpenEntry, implementado por pastas e contêineres de catálogo de endereços, pode retornar MAPI_E_INVALID_PARAMETER ou o contêiner raiz, dependendo do implementador.
Além de não permitir um valor NULL para o identificador de entrada, o método OpenEntry da sessão difere de outros métodos OpenEntry porque seu trabalho não é abrir objetos. Em vez disso, examina o identificador de entrada e encaminha a chamada para outro método OpenEntry implementado pelo provedor de serviços apropriado. Por exemplo, se você chamar IMAPISession::OpenEntry com o identificador de entrada de uma mensagem, MAPI chamará o método IMSLogon::OpenEntry do repositório de mensagens responsável pela mensagem.
Além de usar a sessão para abrir objetos, os clientes a usam para compará-los. O método IMAPISession::CompareEntryIDs compara objetos comparando seus identificadores de entrada. Se as estruturas MAPIUID contidas nos identificadores de entrada pertencerem ao mesmo provedor de serviços, o MAPI encaminhará a chamada para esse provedor. CompareEntryIDs retorna um valor de erro quando os dois identificadores de entrada não correspondem. Embora esse método possa comparar identificadores de entrada que pertencem a qualquer tipo de objeto, CompareEntryIDs funciona melhor para objetos de nível mais alto, como armazenamentos de mensagens e contêineres de catálogo de endereços. Para comparar objetos de nível inferior, compare diretamente as chaves de pesquisa dos objetos (PR_SEARCH_KEY (PidTagSearchKey)) ou chaves de registro (PR_RECORD_KEY (PidTagRecordKey)).
Assim como OpenEntry, CompareEntryIDs é implementado por vários objetos. Escolha qual método OpenEntry e CompareEntryID usar de acordo com a quantidade de informações que você tem sobre o objeto ou objetos a serem abertos ou comparados. Use as seguintes diretrizes ao decidir qual método de interface chamar:
Se você não tiver informações sobre os objetos de destino, chame IMAPISession::OpenEntry ou IMAPISession::CompareEntryIDs. Essa abordagem permite o acesso a qualquer objeto, mas é a mais lenta das três.
Se você souber que os objetos de destino são entradas de catálogo de endereços, em vez de, por exemplo, pastas, chame o método IAddrBook::OpenEntry ou IAddrBook::CompareEntryIDs . IAddrBook::OpenEntry abre o contêiner raiz do catálogo de endereços quando NULL é especificado como o objeto de destino. Essa abordagem permite o acesso a qualquer objeto de catálogo de endereços e é mais rápida do que usar IMAPISession, mas mais lenta do que usar IMAPIContainer.
Se o identificador de entrada que está sendo usado for um identificador de entrada de curto prazo ou se você souber que os objetos de destino pertencem a um determinado contêiner ou pasta do catálogo de endereços, chame o método IMAPIContainer::OpenEntry . Essa abordagem gera o desempenho mais rápido, mas permite o acesso apenas a objetos em um contêiner ou pasta específico.