Compartilhar via


IAddrBook::ResolveName

Aplica-se a: Outlook 2013 | Outlook 2016

Executa a resolução de nomes, atribuindo identificadores de entrada a destinatários em uma lista de destinatários.

HRESULT ResolveName(
  ULONG_PTR ulUIParam,
  ULONG ulFlags,
  LPSTR lpszNewEntryTitle,
  LPADRLIST lpAdrList
);

Parâmetros

ulUIParam

[in] Um identificador para a janela pai de uma caixa de diálogo que é mostrada, se especificada, para solicitar que o usuário resolve ambiguidade.

ulFlags

[in] Um bitmask de sinalizadores que controlam vários aspectos do processo de resolução. Os seguintes sinalizadores podem ser definidos:

AB_UNICODEUI

Indica que lpszNewEntryTitle é uma cadeia de caracteres UNICODE.

MAPI_CACHE_ONLY

Use apenas o catálogo de endereços offline para executar a resolução de nomes. Por exemplo, você pode usar esse sinalizador para permitir que um aplicativo cliente abra a GAL (lista de endereços global) no modo de troca armazenado em cache e acesse uma entrada no catálogo de endereços do cache sem criar tráfego entre o cliente e o servidor. Esse sinalizador tem suporte apenas pelo Provedor de Catálogo de Endereços do Exchange.

MAPI_DIALOG

Exibe uma caixa de diálogo para solicitar ao usuário informações adicionais de resolução de nomes. Se esse sinalizador não estiver definido, nenhuma caixa de diálogo será exibida.

MAPI_UNICODE

Indica que as propriedades retornadas na lista de endereços devem ser do tipo PT_UNICODE em vez de PT_STRING8.

lpszNewEntryTitle

[in] Um ponteiro para enviar um texto para o título do controle na caixa de diálogo que solicita que o usuário insira um destinatário. O título varia dependendo do tipo de destinatário. O parâmetro lpszNewEntryTitle pode ser NULL.

lpAdrList

[in-out] Um ponteiro para uma estrutura ADRLIST que contém a lista de nomes de destinatário a serem resolvidos. Essa estrutura ADRLIST pode ser criada pelo método IAddrBook::Address .

Valor de retorno

S_OK

O processo de resolução de nomes foi bem-sucedido.

MAPI_E_AMBIGUOUS_RECIP

Pelo menos um destinatário no parâmetro lpAdrList correspondeu a mais de uma entrada no catálogo de endereços. Normalmente, esse valor é retornado quando o sinalizador MAPI_DIALOG é definido, proibindo a exibição de uma caixa de diálogo.

MAPI_E_NOT_FOUND

Pelo menos um destinatário no parâmetro lpAdrList não pode ser resolvido. Normalmente, esse valor é retornado quando o sinalizador MAPI_DIALOG é definido, proibindo a exibição de uma caixa de diálogo.

Comentários

Clientes e provedores de serviços chamam o método ResolveName para iniciar o processo de resolução de nomes. Uma entrada não resolvida é uma entrada que ainda não tem uma propriedade de identificador de entrada ou PR_ENTRYID (PidTagEntryId).

ResolveName passa pelo processo a seguir para cada entrada não resolvida na lista de endereços passada no parâmetro lpAdrList .

  1. Se o tipo de endereço do destinatário aderir ao formato de um endereço SMTP ( displayname@ domain.top-level-domain), ResolveName atribuirá um identificador de entrada único.

  2. Para cada contêiner na propriedade PR_AB_SEARCH_PATH (PidTagAbSearchPath), ResolveName chama o método IABContainer::ResolveNames . ResolveNames tenta corresponder o nome de exibição de cada destinatário não resolvido com um nome de exibição que pertence a uma de suas entradas.

  3. Se um contêiner não for compatível com ResolveNames, ResolveName restringirá a tabela de conteúdo do contêiner usando uma restrição de propriedade de PR_ANR (PidTagAnr). Essa restrição faz com que o contêiner execute um tipo de pesquisa de "melhor palpite" para localizar um destinatário correspondente. Todos os contêineres devem dar suporte à restrição de propriedade PR_ANR .

  4. Quando um contêiner retorna um destinatário que corresponde a vários nomes, ResolveName exibe uma caixa de diálogo se o sinalizador MAPI_DIALOG estiver definido, o que permite que o usuário selecione o nome correto.

  5. Se todos os contêineres da propriedade PR_AB_SEARCH_PATH tiverem sido chamados e nenhuma correspondência tiver sido encontrada, o destinatário permanecerá sem solução.

Se um ou mais destinatários não forem resolvidos, ResolveName retornará MAPI_E_NOT_FOUND. Se um ou mais destinatários tivessem uma resolução ambígua que não pudesse ser resolvida com uma caixa de diálogo ou porque o sinalizador MAPI_DIALOG não foi definido, ResolveName retornará MAPI_E_AMBIGUOUS_RECIP. Quando alguns dos destinatários são ambíguos e alguns não podem ser resolvidos, ResolveName pode retornar qualquer valor de erro.

Se um nome não puder ser resolvido, o cliente poderá criar um endereço único que tenha um identificador de entrada e endereço especialmente formatado. Para obter mais informações sobre o formato de identificadores de entrada únicos, consulte Identificadores de entrada únicos. Para obter mais informações sobre o formato de endereços únicos, confira Endereços únicos.

O MAPI dá suporte a cadeias de caracteres Unicode para o ADRLIST e os novos parâmetros de título de entrada para ResolveName; se você definir o sinalizador MAPI_UNICODE, as seguintes propriedades serão retornadas como PT_UNICODE de tipo nas estruturas do ADRENTRY :

No entanto, a propriedade PR_7BIT_DISPLAY_NAME (PidTag7BitDisplayName) sempre é retornada como tipo PT_STRING8.

Referência do MFCMAPI

Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.

Arquivo Função Comentário
MAPIABFunctions.cpp
AddOneOffAddress
O MFCMAPI usa o método ResolveName para resolve um endereço único antes de adicioná-lo a uma mensagem.
MAPIABFunctions.cpp
AddRecipient
O MFCMAPI usa o método ResolveName para pesquisar uma entrada do catálogo de endereços por nome de exibição.

Confira também

ADRLIST

IABContainer::ResolveNames

IAddrBook::Address

IAddrBook : IMAPIProp

MFCMAPI como exemplo de código