Partager via


Agir en tant que fournisseur de carnet d’adresses d’hôte

S’applique à : Outlook 2013 | Outlook 2016

Un fournisseur hôte est un fournisseur de carnets d’adresses qui inclut des destinataires d’autres fournisseurs dans ses conteneurs et s’appuie sur l’implémentation des destinataires par les autres fournisseurs pour contrôler partiellement leur maintenance. Un fournisseur d’hôte utilise les identificateurs de modèle de ces destinataires étrangers pour lier les données de ces destinataires au code dans le fournisseur étranger. Ce processus de liaison est lancé lorsque votre fournisseur récupère la propriété PR_TEMPLATEID (PidTagTemplateid) d’un destinataire et la transmet dans un appel à IMAPISupport ::OpenTemplateID.

Lorsque votre fournisseur appelle IMAPISupport ::OpenTemplateID, MAPI fait correspondre le MAPIUID dans l’identificateur de modèle avec un MAPIUID inscrit par un fournisseur et appelle la méthode IABLogon ::OpenTemplateID du fournisseur. Le fournisseur étranger peut retourner un pointeur vers l’objet de propriété de votre fournisseur, vers sa propre implémentation d’objet de propriété ou vers une implémentation qui encapsule l’objet de votre fournisseur. Le pointeur retourné est placé dans le contenu du paramètre lppMAPIPropNew .

Votre fournisseur peut choisir d’appeler IMAPISupport ::OpenTemplateID avec l’indicateur FILL_ENTRY défini. Définissez cet indicateur lorsque le destinataire est créé ou qu’un long délai s’est écoulé depuis que votre fournisseur a actualisé les propriétés du destinataire. Une utilisation courante de l’indicateur FILL_ENTRY consiste à maintenir la synchronisation d’un destinataire dans votre fournisseur avec l’indicateur d’origine. L’implémentation de ce type de planification de synchronisation améliore les performances.

Pour maintenir la synchronisation d’un destinataire étranger

  1. Déterminez un intervalle approprié pour les mises à jour périodiques.

  2. Horodatage de chaque appel à IMAPISupport ::OpenTemplateID.

  3. Évaluez s’il est nécessaire ou non d’effectuer une mise à jour complète en fonction de la durée d’expiration depuis le dernier appel. Si une mise à jour complète est nécessaire, appelez IMAPISupport ::OpenTemplateID avec l’indicateur FILL_ENTRY. Si ce n’est pas nécessaire, ne définissez pas l’indicateur sur l’appel.

Lorsqu’un client effectue une demande pour l’une des propriétés du destinataire copié, votre fournisseur peut choisir de gérer la demande lui-même ou d’utiliser le code fourni par le fournisseur étranger. Votre fournisseur peut s’attendre à ce que le fournisseur étranger intercepte la plupart, voire la totalité, des appels à IMAPIProp , à l’exception de IMAPIProp ::OpenProperty. Un appel à OpenProperty demandant la propriété PR_DETAILS_TABLE (PidTagDetailsTable) est toujours transféré à votre fournisseur.

Pour accéder au code d’identificateur du modèle

  1. Ouvrez le destinataire et appelez sa méthode IMAPIProp ::GetProps pour récupérer la propriété PR_TEMPLATEID (PidTagTemplateid). Si GetProps échoue car PR_TEMPLATEID n’est pas disponible, le fournisseur étranger ne prend pas en charge un identificateur de modèle et le code associé pour ce destinataire. Votre fournisseur doit utiliser son implémentation du destinataire pour toute la maintenance.

  2. Si l’identificateur de modèle est retourné à partir de GetProps, transmettez-le et un pointeur à l’implémentation IMAPIProp du destinataire dans un appel à la méthode IMAPISupport ::OpenTemplateID . Définissez l’indicateur FILL_ENTRY si la plupart ou la totalité des propriétés du destinataire doivent être mises à jour, par exemple au moment de la création ou si elles n’ont pas été mises à jour depuis un certain temps.

  3. Si OpenTemplateID renvoie l’implémentation IMAPIProp du fournisseur étranger, retournez au client un pointeur vers cette implémentation.

  4. Si OpenTemplateID ne retourne pas d’implémentation, généralement parce que le fournisseur étranger n’est pas dans le profil, retournez au client un pointeur vers l’implémentation IMAPIProp de votre fournisseur. Le client doit être en mesure d’utiliser les propriétés de l’objet à l’aide de l’une ou l’autre interface.