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 associação de 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 por:
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 ele está ausente da propriedade PR_ENTRYID (PidTagEntryId) na matriz de valor da propriedade em seu membro aEntries da estrutura ADRLIST . Ignore todas as entradas que não tenham nenhuma propriedade associada a elas.
Denuncie o resultado de sua tentativa de resolução no parâmetro lpFlagList , uma matriz de sinalizadores que corresponde à matriz de nomes de exibição no lpAdrList. Os sinalizadores são posicionais de modo que o primeiro sinalizador corresponda ao primeiro membro do aEntries na estrutura ADRLIST , o segundo sinalizador corresponde ao segundo membro do 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 em suas entradas de 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ígua – 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 na implementação de IMAPITable::Restrict executando um tipo de pesquisa de "melhor palpite", correspondendo a uma ou mais propriedades específicas que fazem sentido para seu 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 entre 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 qualquer tipo, você deve criar um objeto wrapper para incluir uma versão personalizada de Restrição que intercepta a chamada.