Vue d’ensemble du type de propriété MAPI
S’applique à : Outlook 2013 | Outlook 2016
Les types de propriétés sont des constantes définies par MAPI dans mapIDEFS. Fichier d’en-tête H qui indique le type de données sous-jacent d’une valeur de propriété. Toutes les propriétés, qu’elles soient définies par MAPI, par les applications clientes ou par les fournisseurs de services, utilisent l’un de ces types.
Les types de propriétés suivent une convention de nommage similaire à celle utilisée pour les balises de propriété. De nombreux types de propriétés ont une version à valeur unique et une version à plusieurs valeurs. Les propriétés à valeur unique contiennent une valeur de leur type, telle qu’un entier unique ou une chaîne de caractères. La constante utilisée pour représenter une propriété de valeur unique comporte deux parties : le préfixe PT_ et une chaîne décrivant le type réel, par exemple LONG ou STRING8.
Les propriétés à valeurs multiples contiennent plusieurs valeurs de leur type. Contrairement aux tableaux de variantes OLE, chaque valeur d’une propriété à valeurs multiples est du même type. La constante utilisée pour représenter les propriétés à valeurs multiples est créée en combinant l’indicateur MV_FLAG avec la constante de valeur unique correspondante représentant le type de base. Il existe trois parties : le préfixe PT_ suivi de MV_ suivi d’une chaîne qui décrit le type. Par exemple, le type d’une propriété contenant plusieurs entiers est PT_MV_LONG et pour plusieurs chaînes de caractères est PT_MV_STRING8.
L’illustration suivante montre la structure d’une structure SPropValue pour décrire un entier à plusieurs valeurs, une propriété de type PT_MV_LONG. Le membre Value est développé pour inclure le nombre de valeurs entières dans la propriété et un pointeur vers un tableau de ces valeurs.
Propriétés à plusieurs valeurs
Bien que la prise en charge des propriétés à valeurs multiples soit facultative, MAPI recommande que les clients et les fournisseurs de services prennent en charge les deux types de propriétés, car cela permet une meilleure interaction entre les composants compatibles MAPI.
L’illustration suivante répertorie toutes les différentes constantes de type de propriété, montrant où elles sont stockées dans une structure SPropValue . La taille du membre Value dépend du type particulier. Notez que tous les types à valeur unique n’ont pas d’équivalents à plusieurs valeurs.
Constantes de type de propriété
de
Les clients et les fournisseurs de services qui travaillent avec une propriété doivent suivre deux étapes :
Déterminez si la propriété est disponible ou non disponible.
Si disponible, récupérez la valeur de la propriété.
Parfois, un client ou un fournisseur de services n’a besoin que de case activée pour l’existence d’une propriété ; d’autres fois, il est nécessaire de case activée pour une valeur spécifique. Par exemple, les fournisseurs de transport ont trois méthodes d’action différentes pour le traitement de la propriété PR_SEND_RICH_INFO (PidTagSendRichInfo), une valeur booléenne qui indique si un message doit ou non être transmis avec du texte mis en forme. Si PR_SEND_RICH_INFO est défini sur TRUE, le fournisseur de transport transmet le texte mis en forme. S’il est défini sur FALSE, le texte mis en forme est ignoré avant la transmission. Si PR_SEND_RICH_INFO n’est pas disponible, le fournisseur de transport suit sa ligne de conduite par défaut, quelle qu’elle soit pour le fournisseur particulier.
MAPI définit un type de propriété spécial, PT_UNSPECIFIED, qu’un client ou un fournisseur de services peut utiliser pour récupérer une propriété lorsque le type de propriété est inconnu. Pour récupérer une propriété sans connaître à l’avance son type, un client ou un fournisseur de services appelle la méthode IMAPIProp ::GetProps d’un objet et transmet une balise de propriété composée de l’identificateur de la propriété et du type de propriété PT_UNSPECIFIED. GetProps retourne une structure SPropValue pour la propriété, en remplaçant PT_UNSPECIFIED par le type approprié. Les fournisseurs de services implémentant GetProps doivent prendre en charge PT_UNSPECIFIED.
Certains objets MAPI prennent en charge les propriétés qui sont elles-mêmes des objets. Les propriétés de l’objet ont le type PT_OBJECT. Au lieu d’utiliser IMAPIProp ::GetProps pour accéder à ces propriétés, les clients et les fournisseurs de services utilisent généralement la méthode IMAPIProp ::OpenProperty , en spécifiant l’interface appropriée pour l’accès ou une méthode sur l’objet prenant en charge la propriété.
Étant donné que l’accès à la valeur d’une propriété d’objet implique l’utilisation de l’une des interfaces de l’objet, GetProps n’est pas approprié. Avec GetProps, l’appelant accède à la valeur d’une propriété via une structure SPropValue . Avec IMAPIProp ::OpenProperty, l’appelant récupère un pointeur vers une interface qui peut accéder à l’objet. OpenProperty peut toujours être utilisé pour récupérer une propriété d’objet. L’autre option, l’appel d’une méthode sur l’objet, n’est pas disponible avec chaque propriété d’objet.
Par exemple, chaque dossier prend en charge deux tables, une table de hiérarchie et une table de contenu. Ces tables sont des propriétés du dossier ; leurs balises de propriété sont PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy) et PR_CONTAINER_CONTENTS (PidTagContainerContents). Les tables sont des objets qui nécessitent l’interface IMAPITable pour l’accès. Un client peut appeler la méthode IMAPIContainer ::GetHierarchyTable du dossier pour accéder à la table de hiérarchie, la méthode IMAPIContainer ::GetContentsTable du dossier pour accéder à la table de contenu ou la méthode IMAPIProp ::OpenProperty du dossier pour accéder à l’une ou l’autre table. Pour appeler OpenProperty, un client passe la balise de propriété pour la propriété comme premier paramètre et un identificateur d’interface pour l’interface à utiliser pour l’accès en tant que deuxième paramètre. Ces paramètres sont PR_CONTAINER_HIERARCHY ou PR_CONTAINER_CONTENTS et IID_IMAPITable.
Pour obtenir la liste complète des types de propriétés à valeur unique et à valeurs multiples, consultez Types de propriétés.