Ouverture d’un dossier d’une banque de messages
S’applique à : Outlook 2013 | Outlook 2016
Avant qu’un dossier puisse être ouvert, son identificateur d’entrée doit être disponible. Pour la plupart des dossiers, cela signifie récupérer leurs propriétés PR_ENTRYID . Pour les dossiers spéciaux, tels que certains dossiers de sous-arborescence IPM et d’autres dossiers racine, MAPI définit des propriétés d’identificateur d’entrée spéciales accessibles en appelant la méthode IMAPIProp ::GetProps de la banque de messages. Ces identificateurs d’entrée sont toujours à long terme et sont nommés comme suit :
Folder | Propriété identificateur d’entrée |
---|---|
Dossier bo�te d'envoi |
PR_IPM_OUTBOX_ENTRYID (PidTagIpmOutboxEntryId) (classe de message IPM uniquement) |
dossier Éléments supprimés |
PR_IPM_WASTEBASKET_ENTRYID (PidTagIpmWastebasketEntryId) |
dossier �l�ments envoy�s |
PR_IPM_SENTMAIL_ENTRYID (PidTagIpmSentMailEntryId) |
Dossier racine IPM |
PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId) |
Dossier racine de r�sultats de recherche |
PR_FINDER_ENTRYID (PidTagFinderEntryId) |
Dossier racine des vues courantes |
PR_COMMON_VIEWS_ENTRYID (PidTagCommonViewsEntryId) |
Dossier racine des vues personnelles |
PR_VIEWS_ENTRYID (PidTagViewsEntryId) |
Dossier racine des contacts |
PR_IPM_CONTACT_ENTRYID (PidTagIpmContactEntryId) |
Brouillons du dossier racine |
PR_IPM_DRAFTS_ENTRYID (PidTagIpmDraftsEntryId) |
Journal dossier racine |
PR_IPM_JOURNAL_ENTRYID (PidTagIpmJournalEntryId) |
Dossier racine du calendrier |
PR_IPM_APPOINTMENT_ENTRYID (PidTagIpmAppointmentEntryId) |
Dossier racine notes |
PR_IPM_NOTE_ENTRYID (PidTagIpmNoteEntryId) |
Dossier racine des tâches |
PR_IPM_TASK_ENTRYID (PidTagIpmTaskEntryId) |
Avant d’essayer de récupérer l’un de ces identificateurs d’entrée spéciaux, récupérez la propriété PR_VALID_FOLDER_MASK (PidTagValidFolderMask) de la banque de messages. PR_VALID_FOLDER_MASK est un masque de bits qui identifie les identificateurs d’entrée spéciaux qui existent. Il existe un bit pour chacun des dossiers spéciaux. Si le bit est défini, cela indique que le dossier correspondant est pris en charge et a un identificateur d’entrée valide. Par exemple, si le dossier Éléments supprimés existe et a un identificateur d’entrée valide, le bit FOLDER_IPM_WASTEBASKET_VALID est défini dans PR_VALID_FOLDER_MASK.
Ouvrez le dossier où tous les messages entrants d’une classe particulière sont placés
Appelez IMsgStore ::GetReceiveFolder pour récupérer son identificateur d’entrée, en définissant le paramètre lpszMessageClass pour qu’il pointe vers une chaîne de caractères identifiant la classe de message. Par exemple, si vous souhaitez ouvrir la boîte de réception de votre sous-arborescence IPM, pointez lpszMessageClass sur IPM. Si vous souhaitez ouvrir le dossier de réception pour les messages IPC, définissez-le pour qu’il pointe vers IPC.
S’il n’existe aucun dossier de réception inscrit pour la classe de message, GetReceiveFolder choisit le dossier de réception dont la classe de message associée correspond au préfixe le plus long possible de la classe de message passée. Pour plus d’informations, consultez Dossiers de réception MAPI.
Notez que la propriété PR_IPM_OUTBOX_ENTRYID est utilisée pour ouvrir le dossier Boîte d’envoi uniquement pour les messages IPM. Si vous ouvrez la boîte d’envoi des messages IPC, utilisez à la place l’identificateur d’entrée de son dossier de réception. Les messages IPC entrants et sortants sont placés dans le dossier de réception.
Appelez l’une des quatre méthodes OpenEntry pour ouvrir le dossier et retourner un pointeur d’interface que vous pouvez utiliser pour y accéder. Vous pouvez appeler l’une des méthodes suivantes pour ouvrir un dossier :
La méthode spécifique que vous choisissez dépend du dossier à ouvrir et des objets disponibles à ce moment-là. Étant donné que la méthode IMAPISession peut ouvrir n’importe quel dossier pour n’importe quelle banque de messages dans le profil actuel, appelez openEntry lorsque vous ne savez rien sur le dossier à ouvrir. Si vous savez quelle banque de messages possède le dossier et que vous avez un pointeur vers la banque de messages, appelez IMsgStore ::OpenEntry.
Par exemple, utilisez la méthode IMsgStore pour ouvrir un dossier de réception. Si vous avez un pointeur vers l’objet d’ouverture de session du fournisseur de magasin de messages, appelez IMSLogon ::OpenEntry. Étant donné que ces appels vont directement au fournisseur de la banque de messages plutôt que via MAPI, le traitement est plus rapide. Si le dossier que vous ouvrez est un sous-dossier d’un dossier que vous avez déjà ouvert, appelez la méthode IMAPIContainer ::OpenEntry du dossier ouvert. La méthode IMAPIContainer ouvre uniquement les sous-dossiers d’un dossier actuellement ouvert et est la seule méthode garantie pour fonctionner avec des identificateurs d’entrée à court terme.
Si vous souhaitez pouvoir apporter des modifications au dossier à ouvrir, spécifiez un niveau d’accès en définissant l’indicateur MAPI_BEST_ACCESS ou MAPI_MODIFY dans l’appel OpenEntry . Ces indicateurs sont des suggestions au fournisseur de la banque de messages pour accorder le niveau d’accès le plus élevé, pour MAPI_BEST_ACCESS ou l’accès en lecture/écriture, pour MAPI_MODIFY, lors de l’ouverture du dossier.
Étant donné que ces indicateurs ne sont que des suggestions, le dossier peut ou non être ouvert avec le niveau d’accès attendu. En récupérant la propriété PR_ACCESS (PidTagAccess), vous pouvez déterminer la plage d’opérations qui peuvent être effectuées sur le dossier ouvert.
Toutefois, étant donné que de nombreux fournisseurs de magasins de messages calculent la valeur de cette propriété à la demande plutôt que de la prendre en charge en tant que propriété de dossier ou en tant que colonne dans leur table de hiérarchie, la récupérer peut prendre beaucoup de temps. Une autre stratégie consiste à tenter l’opération que vous devez effectuer et à retourner une erreur si nécessaire.