Implementando a resolução de nomes

Aplica-se a: Outlook 2013 | Outlook 2016

Os provedores de catálogo de endereços são responsáveis por dar suporte à resolução de nomes - o processo de associar um identificador de entrada a um nome de exibição. Os clientes iniciam a resolução de nomes quando chamam IAddrBook::ResolveName para garantir que cada membro da lista de destinatários de uma mensagem de saída corresponda a um endereço válido.

Seu provedor pode dar suporte à resolução de nomes:

  • Suporte à restrição de propriedade PR_ANR (PidTagAnr), um requisito para todos os contêineres do catálogo de endereços.

  • Implementando o método IABContainer::ResolveNames , uma opção para todos os contêineres do catálogo de endereços.

Se você optar por dar suporte a IABContainer::ResolveNames, tente localizar uma correspondência exata para cada nome de exibição não resolvido na estrutura ADRLIST passada com o parâmetro lpAdrList . Você pode identificar um nome de exibição não resolvido porque não tem a propriedade PR_ENTRYID (PidTagEntryId) na matriz de valor da propriedade em seu membro aEntries da estrutura ADRLIST . Ignore todas as entradas que tenham zero propriedades associadas a elas.

Relate o resultado de sua tentativa de resolução no parâmetro lpFlagList , uma matriz de sinalizadores que corresponde à matriz de nomes de exibição em lpAdrList. Os sinalizadores são posicionais, de modo que o primeiro sinalizador corresponda ao primeiro membro aEntries na estrutura ADRLIST , o segundo sinalizador corresponda ao segundo membro aEntries e assim por diante.

Há três resultados possíveis para cada entrada não resolvida:

  • Nenhuma correspondência foi encontrada, o que significa que nenhuma das entradas nas entradas do contêiner corresponde à entrada na estrutura ADRLIST . Defina a entrada correspondente no parâmetro lpFlagList como MAPI_UNRESOLVED.

  • Várias correspondências podem ser encontradas, o que significa que há várias entradas de contêiner que correspondem à entrada na estrutura ADRLIST . Defina a entrada correspondente no parâmetro lpFlagList como MAPI_AMBIGUOUS. Não altere o número de entradas na estrutura ADRLIST .

  • Uma correspondência exata pode ser encontrada, o que significa que há apenas uma entrada de contêiner que corresponde à entrada na estrutura ADRLIST . Defina o membro correspondente no parâmetro lpFlagList como MAPI_RESOLVED e adicione o identificador de entrada à matriz de propriedades associadas à entrada ADRLIST .

Se você optar por não dar suporte a IABContainer::ResolveNames, retorne MAPI_E_NO_SUPPORT de sua implementação.

Todos os provedores de catálogo de endereços são necessários para dar suporte à resolução de nomes ambíguos — a restrição de propriedade PR_ANR — nas tabelas de conteúdo de seus contêineres. Para fornecer esse suporte, lide com a restrição de PR_ANR em sua implementação de IMAPITable::Restrict executando um tipo de pesquisa de "melhor suposição", correspondendo a uma ou mais propriedades específicas que fazem sentido para o provedor. Você pode optar por usar a mesma propriedade ou propriedades todas as vezes, como PR_DISPLAY_NAME (PidTagDisplayName) ou PR_ACCOUNT (PidTagAccount), ou permitir que um administrador escolha em uma lista de propriedades aceitáveis.

Embora a maioria dos provedores forneça sua própria implementação de tabela de conteúdo, você pode personalizar a implementação fornecida pelo MAPI por meio da função CreateTable . No entanto, como a implementação MAPI não dá suporte a restrições de nenhum tipo, você deve criar um objeto wrapper para incluir uma versão personalizada do Restrict que intercepta a chamada.