IXPLogon::AddressTypes
S’applique à : Outlook 2013 | Outlook 2016
Retourne les types de destinataires que le fournisseur de transport gère.
HRESULT AddressTypes(
ULONG FAR * lpulFlags,
ULONG FAR * lpcAdrType,
LPSTR FAR * FAR * lpppszAdrTypeArray,
ULONG FAR * lpcMAPIUID,
LPUID FAR * FAR * lpppUIDArray
);
Paramètres
lpulFlags
[out] Masque de bits d’indicateurs qui contrôle le type de chaînes retournées. L’indicateur suivant peut être défini :
MAPI_UNICODE
Les chaînes retournées sont au format Unicode. Si l’indicateur MAPI_UNICODE n’est pas défini, les chaînes sont au format ANSI.
lpcAdrType
[out] Pointeur vers le nombre d’entrées dans le tableau vers lequel pointe le paramètre lpppszAdrTypeArray .
lpppszAdrTypeArray
[out] Pointeur vers un pointeur vers un tableau de chaînes qui identifient les types de destinataires.
lpcMAPIUID
[out] Pointeur vers le nombre d’entrées dans le tableau vers lequel pointe le paramètre lpppUIDArray .
lpppUIDArray
[out] Pointeur vers un tableau de pointeurs vers des structures MAPIUID qui identifient les types de destinataires.
Valeur renvoyée
S_OK
Le fournisseur de transport a indiqué les types de destinataires qu’il peut gérer.
Remarques pour les responsables de l’implémentation
Le spouleur MAPI appelle la méthode IXPLogon ::AddressTypes immédiatement après le retour d’un fournisseur de transport à partir d’un appel à la méthode IXPProvider ::TransportLogon afin que le fournisseur de transport puisse indiquer les types de destinataires qu’il gère. Pour indiquer cela, le fournisseur de transport doit renvoyer dans le paramètre lpppszAdrTypeArray un pointeur vers un tableau de pointeurs vers des chaînes, ou renvoyer au paramètre lpppUIDArray un pointeur vers un tableau de pointeurs vers des structures MAPIUID , ou transmettre des valeurs dans les deux paramètres.
Ces deux tableaux sont utilisés pour différents processus d’identification. MAPI et le spouleur MAPI utilisent les structures MAPIUID dans le tableau lpppUIDArray pour identifier les identificateurs d’entrée de destinataire qui sont gérés directement par le fournisseur de transport ou par le système de messagerie auquel le fournisseur de transport se connecte. Ni MAPI ni le spouleur MAPI ne développent les adresses à l’aide d’identificateurs d’entrée contenus dans l’une de ces structures MAPIUID ; ces structures sont utilisées uniquement pour l’identification du type de destinataire.
Le spouleur MAPI utilise chacune des chaînes du paramètre lpppszAdrTypeArray pour un test de comparaison lorsqu’il détermine quel fournisseur de transport doit gérer les destinataires d’un message sortant. Si la propriété PR_ADDRTYPE (PidTagAddressType) d’un destinataire de message correspond exactement à une chaîne qui identifie l’un des types d’adresses de messagerie que le fournisseur de transport fournit, le fournisseur peut remettre le message à ce destinataire.
Si plusieurs fournisseurs de transport peuvent gérer le même type de destinataire, MAPI sélectionne un fournisseur de transport en fonction de l’ordre de priorité de transport indiqué dans le profil de l’application cliente. Pour déterminer le fournisseur de transport à utiliser, le spouleur MAPI analyse toutes les structures MAPIUID spécifiées par le fournisseur dans l’ordre de priorité, puis toutes les valeurs de type d’adresse spécifiées par le fournisseur dans l’ordre de priorité. Le premier fournisseur de transport à correspondre à un destinataire particulier dans cette analyse obtient la première occasion de gérer ce destinataire. Si ce fournisseur ne gère pas le destinataire, le spouleur MAPI poursuit l’analyse pour rechercher un fournisseur de transport pour tout destinataire qui n’est pas encore géré. L’analyse se poursuit jusqu’à ce qu’aucune autre correspondance ne soit trouvée, auquel cas un rapport de non-remise est généré pour tout destinataire qui n’a pas été géré.
Si le fournisseur prend toujours en charge un ensemble particulier de types de destinataires, le type d’adresse et les tableaux MAPIUID transmis par le fournisseur de transport peuvent être statiques. Si le fournisseur de transport construit dynamiquement ces tableaux, il peut allouer de la mémoire à l’aide de l’objet de prise en charge précédemment passé dans l’appel à TransportLogon, bien que cela ne soit pas nécessaire.
La mémoire utilisée pour le type d’adresse et les tableaux MAPIUID doit rester allouée jusqu’à l’appel final à la méthode IXPLogon ::TransportLogoff , auquel cas le fournisseur de transport peut libérer la mémoire, si nécessaire. Le fournisseur de transport ne doit pas modifier le contenu de ces tableaux après son retour à partir de l’appel TransportLogoff .
Un fournisseur de transport capable de gérer n’importe quel type de destinataire peut retourner NULL dans le paramètre lpppszAdrTypeArray . Les fournisseurs de transport pour les systèmes de messagerie LAN qui utilisent un serveur central pour remettre des messages sortants à différents systèmes de messagerie étrangers le font généralement. Ce type de fournisseur de transport doit être installé en dernier dans l’ordre de priorité du spouleur MAPI et MAPI des fournisseurs de transport dans le profil.
Un fournisseur de transport qui ne prend pas en charge les messages sortants qui lui sont distribués en fonction du type d’adresse doit retourner une seule chaîne de longueur nulle dans lpppszAdrTypeArray. Si un fournisseur de transport ne prend en charge aucun type de destinataire, il doit passer NULL pour la structure MAPIUID et une chaîne vide pour le type d’adresse. Les fournisseurs de transport de ce type sont généralement utilisés pour installer un préprocesseur de message.