Résolution d’un nom de destinataire
S’applique à : Outlook 2013 | Outlook 2016
Lorsqu’un message est adressé, une liste de destinataires est générée avec des propriétés relatives à chaque destinataire. Au moment de l’envoi du message, l’une de ces propriétés doit être l’identificateur d’entrée à long terme du destinataire. Pour vous assurer que chaque destinataire inclut la propriété PR_ENTRYID (PidTagEntryId), transmettez la structure ADRLIST décrivant votre liste de destinataires dans le contenu du paramètre lpAdrList dans un appel à IAddrBook ::ResolveName.
ResolveName commence le traitement en ignorant les entrées de la structure ADRLIST qui ont déjà été résolues, comme indiqué par la présence d’un identificateur d’entrée dans le tableau SPropValue de la structure ADRENTRY correspondante. Ensuite, ResolveName affecte automatiquement des identificateurs d’entrée unique à deux types de destinataires :
Destinataires dont l’adresse est mise en forme en tant qu’adresse Internet
Destinataires dont l’adresse est mise en forme comme suit :
displayname[address type:email address]
Pour toutes les entrées restantes, ResolveName recherche dans le carnet d’adresses une correspondance exacte sur le nom d’affichage. ResolveName utilise la propriété PR_AB_SEARCH_PATH (PidTagAbSearchPath) pour déterminer l’ensemble des conteneurs à rechercher et l’ordre de recherche. MAPI appelle la méthode IABContainer ::ResolveNames de chaque conteneur pour tenter de résoudre tous les noms. Étant donné que certains conteneurs ne prennent pas en charge ResolveNames, si le conteneur retourne MAPI_E_NO_SUPPORT, MAPI applique une restriction de propriété PR_ANR (PidTagAnr) à sa table de contenu. Tous les conteneurs de carnets d’adresses sont requis pour prendre en charge la résolution de noms avec cette restriction. Une fois tous les noms résolus, aucun autre appel de conteneur n’est effectué. Si tous les conteneurs ont été appelés, mais que les noms ambigus ou non résolus restent, MAPI affiche une boîte de dialogue si possible pour inviter l’utilisateur à résoudre les noms restants.
La restriction PR_ANR correspond à la valeur de la propriété PR_ANR par rapport au nom d’affichage dans la structure ADRLIST . La limitation de l’affichage de la table de contenu d’un conteneur avec la restriction de propriété PR_ANR amène le fournisseur de carnet d’adresses à effectuer un type de recherche « de meilleure estimation », correspondant à la propriété qui est logique pour le fournisseur. Par exemple, un fournisseur de carnet d’adresses peut toujours faire correspondre les noms de la liste des destinataires à PR_DISPLAY_NAME (PidTagDisplayName), tandis qu’un autre peut autoriser un administrateur à sélectionner la propriété.
Pour définir une restriction de propriété PR_ANR sur la table du contenu d’un conteneur de carnet d’adresses
- Créez une structure SRestriction comme indiqué dans le code suivant :
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;
- Appelez la méthode IMAPITable ::Restrict de la table de contenu, en passant la structure SRestriction en tant que paramètre lpRestriction .