Partager via


Implémentation de la résolution de noms

S’applique à : Outlook 2013 | Outlook 2016

Les fournisseurs de carnets d’adresses sont responsables de la prise en charge de la résolution de noms, c’est-à-dire le processus d’association d’un identificateur d’entrée avec un nom d’affichage. Les clients lancent la résolution de noms lorsqu’ils appellent IAddrBook ::ResolveName pour s’assurer que chaque membre de la liste de destinataires d’un message sortant correspond à une adresse valide.

Votre fournisseur peut prendre en charge la résolution de noms en :

  • Prise en charge de la restriction de propriété PR_ANR (PidTagAnr), une exigence pour tous les conteneurs de carnet d’adresses.

  • Implémentation de la méthode IABContainer ::ResolveNames , option pour tous les conteneurs de carnet d’adresses.

Si vous choisissez de prendre en charge IABContainer ::ResolveNames, essayez de trouver une correspondance exacte pour chaque nom d’affichage non résolu dans la structure ADRLIST passée avec le paramètre lpAdrList . Vous pouvez identifier un nom d’affichage non résolu, car il manque la propriété PR_ENTRYID (PidTagEntryId) dans le tableau de valeurs de propriété dans son membre aEntries de la structure ADRLIST . Ignorez les entrées qui n’ont aucune propriété associée.

Signalez le résultat de votre tentative de résolution dans le paramètre lpFlagList , un tableau d’indicateurs qui correspond au tableau de noms d’affichage dans lpAdrList. Les indicateurs sont positionnels de sorte que le premier indicateur correspond au premier membre aEntries dans la structure ADRLIST , le deuxième indicateur correspond au deuxième membre aEntries , et ainsi de suite.

Il existe trois résultats possibles pour chaque entrée non résolue :

  • Aucune correspondance n’a été trouvée, ce qui signifie qu’aucune des entrées de vos entrées de conteneur ne correspond à l’entrée dans la structure ADRLIST . Définissez l’entrée correspondante dans le paramètre lpFlagList sur MAPI_UNRESOLVED.

  • Plusieurs correspondances sont disponibles, ce qui signifie qu’il existe plusieurs entrées de conteneur qui correspondent à l’entrée dans la structure ADRLIST . Définissez l’entrée correspondante dans le paramètre lpFlagList sur MAPI_AMBIGUOUS. Ne modifiez pas le nombre d’entrées dans la structure ADRLIST .

  • Une correspondance exacte est disponible, ce qui signifie qu’il n’y a qu’une seule entrée de conteneur qui correspond à l’entrée dans la structure ADRLIST . Définissez le membre correspondant dans le paramètre lpFlagList sur MAPI_RESOLVED et ajoutez l’identificateur d’entrée au tableau des propriétés associées à l’entrée ADRLIST .

Si vous choisissez de ne pas prendre en charge IABContainer ::ResolveNames, retournez MAPI_E_NO_SUPPORT à partir de votre implémentation.

Tous les fournisseurs de carnets d’adresses doivent prendre en charge la résolution de noms ambiguë ( restriction de propriété PR_ANR ) sur les tables de contenu de leurs conteneurs. Pour fournir cette prise en charge, gérez la restriction PR_ANR dans votre implémentation de IMAPITable ::Restrict en effectuant un type de recherche « de meilleure estimation », correspondant à une ou plusieurs propriétés particulières qui sont pertinentes pour votre fournisseur. Vous pouvez choisir d’utiliser la même ou les mêmes propriétés à chaque fois, par exemple PR_DISPLAY_NAME (PidTagDisplayName) ou PR_ACCOUNT (PidTagAccount), ou autoriser un administrateur à choisir parmi une liste de propriétés acceptables.

Bien que la plupart des fournisseurs fournissent leur propre implémentation de table de contenu, vous pouvez personnaliser l’implémentation fournie par MAPI via la fonction CreateTable . Toutefois, étant donné que l’implémentation MAPI ne prend en charge aucune restriction, vous devez créer un objet wrapper pour inclure une version personnalisée de Restrict qui intercepte l’appel.