Tables de contenu
S’applique à : Outlook 2013 | Outlook 2016
Une table de contenu contient des informations sur les objets d’un conteneur MAPI. Les fournisseurs de carnets d’adresses implémentent des tables de contenu pour chacun de leurs conteneurs, et les fournisseurs de magasins de messages et de transport distant implémentent des tables de contenu pour leurs dossiers. La table des matières d’un conteneur de carnet d’adresses répertorie des informations sur ses objets d’utilisateur de messagerie et de liste de distribution, tandis que la table des matières d’un dossier répertorie des informations sur ses messages. Les tables de contenu sont principalement utilisées par les applications clientes.
Il existe deux types de tables de contenu de dossier :
Les tables de contenu standard contiennent des messages standard, c’est-à-dire des messages qui peuvent être transmis et rendus visibles par un utilisateur.
Les tables de contenu associées contiennent des informations masquées et non transmettables créées par un client dans un but spécifique, par exemple pour stocker une autre représentation d’un message standard. Les informations associées sont créées en passant l’indicateur MAPI_ASSOCIATED à l’appel IMAPIFolder ::CreateMessage .
Les tables de contenu de la plupart des conteneurs de carnets d’adresses et de nombreux dossiers ne prennent pas en charge le tri par catégorie.
Une table de contenu est accessible en appelant :
IMAPIContainer ::GetContentsTable.
- Ou-
IMAPIProp ::OpenProperty avec PR_CONTAINER_CONTENTS (PidTagContainerContents) ou PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents) (dossiers uniquement) spécifié comme balise de propriété et IID_IMAPITable comme identificateur d’interface.
Les fournisseurs de magasins de messages et de carnets d’adresses doivent prendre en charge les deux techniques de récupération des propriétés de table. Il est inacceptable que les fournisseurs ne prennent en charge qu’une seule façon d’accéder à ces tables, car les clients s’attendent à avoir le choix.
GetContentsTable accepte comme entrée plusieurs indicateurs qui spécifient des préférences. Lorsqu’il est défini, l’indicateur MAPI_ASSOCIATED récupère une table de contenu associée. Étant donné que certains dossiers ne prennent pas en charge le contenu associé et qu’il n’existe aucun moyen pour les clients de le déterminer à l’avance, GetContentsTable retourne parfois l’erreur MAPI_E_NO_SUPPORT lorsqu’une table de contenu associée est demandée.
L’indicateur MAPI_DEFERRED_ERRORS indique à l’implémenteur de la table que les erreurs rencontrées pendant l’appel n’ont pas besoin d’être signalées avant un certain temps.
L’appel à IMAPIProp ::OpenProperty implique l’accès à une table de contenu en ouvrant sa propriété correspondante, PR_CONTAINER_CONTENTS pour les tables de contenu du carnet d’adresses et les tables de contenu de dossier standard, et PR_FOLDER_ASSOCIATED_CONTENTS pour les tables de contenu associées. Bien qu’aucune de ces propriétés ne puisse être récupérée par le biais de la méthode IMAPIProp ::GetProps d’un dossier ou d’un conteneur, elles sont incluses dans le tableau de balises de propriété retourné par la méthode IMAPIProp ::GetPropList .
PR_CONTAINER_CONTENTS peuvent également être utilisés pour inclure ou exclure une table de contenu d’une opération de copie. Si un client spécifie PR_CONTAINER_CONTENTS dans le paramètre lpExcludeProps pour IMAPIProp ::CopyTo dans une opération de copie, le nouveau dossier ou conteneur ne prend pas en charge la table du contenu du dossier ou conteneur d’origine.
Les tables de contenu de conteneur et de dossier de carnet d’adresses ont une longue liste de colonnes requises, colonnes que les clients peuvent s’attendre à être disponibles après avoir récupéré la table à partir de GetContentsTable ou OpenProperty. Les fournisseurs peuvent ajouter à cet ensemble requis si nécessaire et les clients, par le biais de la méthode SetColumns , peuvent également demander des modifications.
Les colonnes requises pour chacun des types de tables de contenu sont les suivantes :
Colonne obligatoire | Type de table des matières |
---|---|
PR_ADDRTYPE (PidTagAddressType) |
Tables de conteneurs de carnet d’adresses |
PR_DISPLAY_NAME (PidTagDisplayName) |
Tables de conteneurs de carnet d’adresses |
PR_DISPLAY_CC (PidTagDisplayCc) |
Tables de dossiers de la banque de messages |
PR_DISPLAY_TO (PidTagDisplayTo) |
Tables de contenu de tous les dossiers |
PR_DISPLAY_TYPE (PidTagDisplayType) |
Tables de conteneurs de carnet d’adresses |
PR_ENTRYID (PidTagEntryId) |
Tous les tableaux de contenu |
PR_HASATTACH (PidTagHasAttachments) |
Tables de contenu de tous les dossiers |
PR_INSTANCE_KEY (PidTagInstanceKey) |
Tous les tableaux de contenu |
PR_LAST_MODIFICATION_TIME (PidTagLastModificationTime) |
Tables de dossiers de la banque de messages |
PR_MAPPING_SIGNATURE (PidTagMappingSignature) |
Tables de dossiers de la banque de messages |
PR_MESSAGE_CLASS (PidTagMessageClass) |
Tables de contenu de tous les dossiers |
PR_MESSAGE_DOWNLOAD_TIME (PidTagMessageDownloadTime) |
Tables de dossiers de transport distants |
PR_MESSAGE_FLAGS (PidTagMessageFlags) |
Tables de contenu de tous les dossiers |
PR_MESSAGE_SIZE (PidTagMessageSize) |
Tables de contenu de tous les dossiers |
PR_MSG_STATUS (PidTagMessageStatus) |
Tables de contenu de tous les dossiers |
PR_OBJECT_TYPE (PidTagObjectType) |
Tous les tableaux de contenu |
PR_PARENT_ENTRYID (PidTagParentEntryId) |
Tables de dossiers de la banque de messages |
PR_RECORD_KEY (PidTagRecordKey) |
Conteneur de carnet d’adresses et tables de dossiers de la banque de messages |
PR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) |
Tables de dossiers de transport distants |
PR_STORE_ENTRYID (PidTagStoreEntryId) |
Tables de dossiers de la banque de messages |
PR_STORE_RECORD_KEY (PidTagStoreRecordKey) |
Tables de dossiers de la banque de messages |
L’identificateur d’entrée disponible avec chaque ligne peut être un identificateur d’entrée à court terme ou à long terme, en fonction de l’implémentation de la table. Les identificateurs d’entrée à court terme sont généralement utilisés dans les situations où les performances sont un problème. L’un ou l’autre type d’identificateur d’entrée peut être utilisé pour accéder à l’objet correspondant.
Les tables de contenu ont également un ensemble de colonnes facultatives, mais généralement incluses par les fournisseurs de services dans leurs implémentations. Ces colonnes facultatives sont les suivantes :
Colonne facultative | Type de table des matières |
---|---|
PR_CLIENT_SUBMIT_TIME (PidTagClientSubmitTime) |
Tables de dossiers de la banque de messages |
PR_CONTENT_COUNT (PidTagContentCount) |
Tables de contenu de dossiers standard |
PR_CONTENT_UNREAD (PidTagContentUnreadCount) |
Tables de contenu de dossiers standard |
PR_CONVERSATION_INDEX (PidTagConversationIndex) |
Tables de dossiers de la banque de messages |
PR_EMAIL_ADDRESS (PidTagEmailAddress) |
Tables de conteneurs de carnet d’adresses |
PR_IMPORTANCE (PidTagImportance) |
Tables de contenu de tous les dossiers |
PR_MESSAGE_DELIVERY_TIME (PidTagMessageDeliveryTime) |
Tables de contenu de tous les dossiers |
PR_NORMALIZED_SUBJECT (PidTagNormalizedSubject) |
Tables de contenu de tous les dossiers |
PR_PRIORITY (PidTagPriority) |
Tables de contenu de tous les dossiers |
PR_SEARCH_KEY (PidTagSearchKey) |
Tables de conteneurs de carnet d’adresses |
PR_SEND_RICH_INFO (PidTagSendRichInfo) |
Tables de conteneurs de carnet d’adresses |
PR_SENDER_NAME (PidTagSenderName) |
Tables de contenu de tous les dossiers |
PR_SENSITIVITY (PidTagSensitivity) |
Tables de contenu de tous les dossiers |
PR_SUBJECT (PidTagSubject) |
Tables de contenu de tous les dossiers |
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName) |
Tables de conteneurs de carnet d’adresses |
Les fournisseurs de magasins de messages doivent également inclure PR_PARENT_DISPLAY (PidTagParentDisplay) pour les tables de contenu des dossiers de résultats de recherche uniquement.
Les propriétés nommées peuvent être ajoutées à l’ensemble de colonnes d’une table de contenu de dossier uniquement si tous les messages du dossier ont la même signature de mappage, c’est-à-dire le même mappage des noms de propriétés aux identificateurs de propriété. Les tables de contenu de dossier doivent prendre en charge l’ajout de propriétés spécifiques à la classe de message à l’ensemble de colonnes, si elles prennent en charge la création de messages arbitraires dans le dossier.
Les clients peuvent enregistrer l’ordre de tri par défaut pour une table de contenu de dossier en appelant sa méthode IMAPIFolder ::SaveContentsSort . Si l’indicateur RECURSIVE_SORT est spécifié sur l’appel, l’ordre de tri peut être appliqué à tous les sous-dossiers du dossier.