Usando várias contas do Exchange

Aplica-se a: Outlook 2013 | Outlook 2016

O Microsoft Outlook 2010 e o Microsoft Outlook 2013 oferecem suporte à integração com várias contas de email do Exchange. No Outlook 2010 ou no Outlook 2013, um usuário poderia adicionar duas contas do Exchange ao mesmo perfil e ainda aproveitar os recursos avançados do Exchange, como a GAL (lista de endereços global) publicada, a configuração de Ausência Temporária do Exchange e o compartilhamento de pastas.

Aqueles familiarizados com as seções de perfil MAPI para o Microsoft Office Outlook 2007 e versões anteriores sabem que as configurações do Exchange, como o nome de usuário de email e o nome do servidor, são armazenadas na seção Perfil Global fixo do Exchange, pbGlobalProfileSectionGuid. No Outlook 2010 e no Outlook 2013, cada conta do Exchange precisa de sua própria seção de perfil para armazenar configurações, tornando o pbGlobalProfileSectionGuid obsoleto.

As configurações do Outlook 2010 e do Outlook 2013 Exchange ainda são armazenadas no perfil, mas um identificador exclusivo para a seção de perfil que contém suas configurações é alocado dinamicamente por perfil. O local das configurações do Exchange no perfil é armazenado na propriedade canônica PidTagExchangeProfileSectionId, que pode ser encontrada na seção de perfil de serviço de mensagens da conta do Exchange. Esta propriedade também pode ser encontrada na seção de perfil de cada provedor neste serviço de mensagens da conta. O identificador exclusivo não é armazenado no servidor e será diferente entre os perfis.

O Outlook 2010 e o Outlook 2013 usam o PidTagExchangeProfileSectionId como um identificador exclusivo para especificar uma conta do Exchange. Quando usado dessa maneira, esse identificador exclusivo é conhecido como emsmdbUID. Para algumas operações MAPI e Outlook, um emsmdbUID pode ser necessário para especificar qual conta do Exchange deve ser usada para a operação.

Para dar suporte a várias contas do Exchange, você deve usar algumas chamadas para novas funções em seu código. Substitua qualquer chamada que use um entryID e IAddrBook::OpenEntry ou IAddrBook::CompareEntryIDs em IMailUser : IMAPIProp e IDistList : IMAPIContainer por uma das funções a seguir.

Suporte herdado

Todos os clientes MAPI gravados antes da criação desta nova seção emsmdbUID ainda têm suporte. Esses clientes continuarão a recuperar a seção global anterior, pbGlobalProfileSectionGuid. As consultas para esta seção de perfil serão redirecionadas para uma conta designada do Exchange que lida com consultas herdadas. A conta que lida com as chamadas herdadas pode ser determinada examinando a tabela de serviço de mensagens e adicionando uma coluna para PR_EMSMDB_LEGACY. Somente um serviço de mensagens terá isso definido como true e seu PidTagExchangeProfileSectionId é chamado de emsmdbUID herdado.

Observação

As configurações de MAPI configuráveis, como o repositório padrão e a conta padrão, não têm efeito sobre qual conta lida com chamadas herdadas. A conta que lida com as chamadas herdadas não pode ser configurada.

O emsmdbUID da conta herdada é copiado para a Seção de Perfil Global do Outlook. Se essa propriedade não existir, consultar a tabela de serviços de mensagem determinará qual conta é o manipulador herdado e definirá o valor na Seção de Perfil Global do Outlook.

Para ser claro, a Seção de Perfil Global do Outlook difere da Seção de Perfil Global do Exchange e, no Outlook 2010 e no Outlook 2013, a Seção de Perfil Global do Exchange não é mais realmente global porque você pode ter várias contas do Exchange. A seção Perfil Global do Outlook contém propriedades sobre o Outlook, como o estado da pasta MRU ou o estado da conexão global.

Contextos de conta do Catálogo de Endereços

Para resolver endereços corretamente com várias contas do Exchange, use as novas funções que usam um contexto de conta para que as chamadas para o catálogo de endereços pesquisem a conta correta do Exchange.

Algumas APIs de catálogo de endereços anteriores foram preteridas porque as APIs não eram totalmente compatíveis com o Exchange múltiplo. Esse contexto de conta geralmente é um emsmdbUID.

Além do emsmdbUID, várias contas do Exchange também têm um emsabpUID.

  1. O valor emsmdbUID identifica o contexto da conta.

  2. O valor emsabpUID identifica um provedor de catálogo de endereços do Exchange.

O valor emsabpUID normalmente é usado ao resolver um destinatário. Ao resolver um destinatário usando IAddrBook::ResolveName, uma linha de destinatário do Exchange contém a propriedade PR_AB_PROVIDERS (0x3D010102), que contém o valor emsabpUID . Esse valor emsabpUID identifica o provedor de catálogo de endereços do Exchange para o destinatário específico.

Se você quiser determinar o valor emsabpUID para um emsmdbUID específico, abra a seção de perfil do emsmdbUID e obtenha a propriedade PR_EMSABP_USER_UID (0x0x3D1A0102).

Se você estiver chamando IAddrBook::P repareRecips, verifique se os destinatários do Exchange na lista que você passa contêm a propriedade PR_AB_PROVIDERS que tem o emsabpUID que corresponde ao provedor de catálogo de endereços ao qual o destinatário pertence. Chamar IAddrBook::P repareRecips em uma linha obtida de IAddrBook::ResolveName não requer nenhuma ação adicional, mas algum código chamará IAddrBook::P repareRecips em linhas que contêm apenas a propriedade PR_ENTRYID . As linhas nesta e em situações semelhantes devem conter PR_ENTRYID e PR_AB_PROVIDERS com a propriedade PR_AB_PROVIDERS definida como o emsabpUID correto.

Veja uma descrição simples do processo para resolver várias contas do Exchange a seguir:

  • Dado o identificador exclusivo do serviço, seu código procura na tabela do repositório de mensagens da propriedade PR_SERVICE_UID que corresponde à que você tem. A partir daí, você pode determinar o PR_MDB_PROVIDER correto. Esta linha contém o repositório apropriado.

  • Dado um emsmdbUID, seu código procura na tabela de serviços de mensagens a linha que expõe o PidTagExchangeProfileSectionId que corresponde ao emsmdbUID.

Confira também

HrCompareABEntryIDsWithExchangeContext

HrDoABDetailsWithExchangeContext

HrDoABDetailsWithProviderUID

HrGetGALFromEmsmdbUID

HrOpenABEntryUsingDefaultContext

HrOpenABEntryWithExchangeContext

HrOpenABEntryWithProviderUID

HrOpenABEntryWithProviderUIDSupport

HrOpenABEntryWithResolvedRow

HrOpenABEntryWithSupport

Propriedade canônica PidTagExchangeProfileSectionId

Como abrir a seção de perfil global