Compartilhar via


Resolvendo um nome de destinatário

Aplica-se a: Outlook 2013 | Outlook 2016

Quando uma mensagem é endereçada, uma lista de destinatários é criada com propriedades relacionadas a cada destinatário. No momento em que a mensagem é enviada, uma dessas propriedades deve ser o identificador de entrada de longo prazo do destinatário. Para garantir que cada destinatário inclua a propriedade PR_ENTRYID (PidTagEntryId), passe a estrutura ADRLIST descrevendo sua lista de destinatários no conteúdo do parâmetro lpAdrList em uma chamada para IAddrBook::ResolveName.

ResolveName começa o processamento ignorando as entradas na estrutura ADRLIST que já foram resolvidas, conforme indicado pela presença de um identificador de entrada na matriz SPropValue da estrutura ADRENTRY correspondente. Em seguida, ResolveName atribui automaticamente identificadores de entrada únicos a dois tipos de destinatários:

  • Destinatários com um endereço formatado como um endereço da Internet

  • Destinatários com um endereço formatado da seguinte maneira:

    displayname[address type:email address]

Para todas as entradas restantes, ResolveName pesquisa o catálogo de endereços para obter uma correspondência exata no nome da exibição. ResolveName usa a propriedade PR_AB_SEARCH_PATH (PidTagAbSearchPath) para determinar o conjunto de contêineres para pesquisar e a ordem de pesquisa. MAPI chama o método IABContainer::ResolveNames de cada contêiner para tentar resolve todos os nomes. Como alguns contêineres não dão suporte a ResolveNames, se o contêiner retornar MAPI_E_NO_SUPPORT, o MAPI aplicará uma restrição de propriedade de PR_ANR (PidTagAnr) na tabela de conteúdo. Todos os contêineres do catálogo de endereços são necessários para dar suporte à resolução de nomes com essa restrição. Depois que todos os nomes forem resolvidos, nenhuma chamada de contêiner adicional será feita. Se todos os contêineres tiverem sido chamados, mas os nomes ambíguos ou não resolvidos permanecerem, o MAPI exibirá uma caixa de diálogo, se possível, para solicitar que o usuário resolve os nomes restantes.

A restrição de PR_ANR corresponde ao valor da propriedade PR_ANR em relação ao nome de exibição na estrutura ADRLIST . Limitar a exibição da tabela de conteúdo de um contêiner com a restrição de propriedade PR_ANR faz com que o provedor de catálogo de endereços execute um tipo de pesquisa de "melhor palpite", correspondendo à propriedade que faz sentido para o provedor. Por exemplo, um provedor de catálogo de endereços sempre pode corresponder nomes na lista de destinatários com PR_DISPLAY_NAME (PidTagDisplayName), enquanto outro pode permitir que um administrador selecione a propriedade.

Para definir uma restrição de propriedade PR_ANR na tabela de conteúdo de um contêiner de catálogo de endereços

  1. Crie uma estrutura SRestriction conforme mostrado no seguinte código:
SRestriction SRestrict;
SRestrict.rt = RES_PROPERTY;
SRestrict.res.resProperty.relop = RELOP_EQ;
SRestrict.res.resProperty.ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->Value.LPSZ = lpszName;
 
  1. Chame o método IMAPITable::Restrict da tabela de conteúdo, passando a estrutura SRestriction como o parâmetro lpRestriction .