Partager via


Gestion des notifications de la banque de messages

S’applique à : Outlook 2013 | Outlook 2016

Pour vous inscrire aux notifications de magasin de messages, appelez la méthode IMAPISession ::Advise ou IMsgStore ::Advise et spécifiez un magasin de messages, un dossier ou un identificateur d’entrée de message dans le contenu du paramètre lpEntryID . Les fournisseurs de magasins de messages prennent en charge les notifications d’objets et de tables. Que vous vous inscrivez auprès d’objets de magasin de messages particuliers, avec la hiérarchie de dossiers et les tables de contenu qui décrivent ces objets, ou avec des objets et des tables, dépend des notifications que vous attendez à voir, des appels que vous effectuez pour effectuer des opérations et de la façon dont le fournisseur de magasin de messages prend en charge la notification.

Étant donné que MAPI offre une certaine flexibilité dans la façon dont les fournisseurs prennent en charge les notifications, sachez que vous ne recevrez pas toujours le même type de notification en réponse à un événement particulier de la part de tous les fournisseurs de magasins de messages. Certains fournisseurs de magasins de messages ne prennent pas en charge les notifications. Pour déterminer si la banque de messages que vous utilisez prend en charge la notification, recherchez le bit STORE_NOTIFY_OK dans sa propriété PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask).

À l’une des extrémités du spectre des fournisseurs de magasins de messages qui prennent en charge les notifications sont les fournisseurs qui génèrent des notifications « enrichies » ; ces fournisseurs envoient des notifications descriptives pour toutes les sources de conseil inscrites. À l’autre extrémité se trouvent les fournisseurs de magasins de messages qui prennent en charge les notifications limitées ; ces fournisseurs envoient des notifications générales pour un nombre restreint de sources d’avis.

Par exemple, si vous copiez un message dans un dossier avec lequel vous vous êtes inscrit pour recevoir à la fois des notifications de copie d’objet et de déplacement d’objet, vous pouvez ou non recevoir la notification de copie de l’objet. Que vous le receviez ou non dépend des éléments suivants :

  • Méthode que vous avez appelée pour effectuer la copie. Il peut s’agir de IMAPIFolder ::CopyMessages, IMAPIProp ::CopyTo ou IMAPIProp ::CopyProps.

  • Comment le fournisseur de magasin de messages implémente la méthode copy.

  • Indique si le fournisseur de magasin de messages prend ou non en charge les notifications d’objets copiées sur les dossiers.

Étant donné qu’il n’existe aucune directive stricte décrivant comment implémenter la notification d’événements pour les fournisseurs de magasins de messages, les clients ne peuvent pas s’attendre à un comportement cohérent. MAPI fait des recommandations sur la façon dont les fournisseurs de magasins de messages implémentent la notification d’événement et le tableau suivant présente ces recommandations. Lisez le tableau comme suit : après avoir effectué l’opération dans la première colonne, attendez-vous à recevoir une notification du type répertorié dans la deuxième colonne si vous vous êtes inscrit pour ce type avec l’objet répertorié dans la troisième colonne. Par exemple, une fois que vous avez créé un dossier, vous recevez une notification fnevObjectCreated uniquement si vous vous êtes inscrit aux notifications fnevObjectCreated avec la banque de messages.

Opération Type d’événement Conseiller la source
Créer un dossier
fnevObjectCreated
Magasin de messages
Supprimer un dossier
fnevObjectDeleted
Dossier supprimé de la banque de messages
Déplacer un dossier d’un dossier vers un autre
fnevObjectMoved
Dossier déplacé de la banque de messages
Copier un dossier d’un dossier vers un autre
fnevObjectCopied
Magasin de messages et dossier copié (aucune notification fnevObjectCreated envoyée pour la nouvelle copie du dossier)
Modification d’une propriété de dossier calculé (PR_SUBFOLDERS (PidTagSubfolders), PR_CONTENT_UNREAD (PidTagContentUnreadCount), PR_CONTENT_COUNT (PidTagContentCount)
fnevObjectModified
Dossier modifié de la banque de messages (aucune notification au dossier parent)
Créer un message
fnevObjectCreated
Magasin de messages
Supprimer un message, ce qui entraîne une modification de la propriété PR_CONTENT_COUNT du dossier parent
fnevObjectDeleted
Message supprimé de la banque de messages
Déplacer un message d’un dossier vers un autre
fnevObjectMoved
Message déplacé de la banque de messages
Copier un message d’un dossier vers un autre
fnevObjectCopied
Message copié de la banque de messages (aucune notification fnevObjectCreated pour une nouvelle copie du message)
Enregistrer un message, ce qui entraîne une modification de la propriété PR_CONTENT_COUNT du dossier parent
fnevObjectCreated
Magasin de messages lors de la première enregistrement uniquement
Enregistrer un message
fnevObjectModified
Magasin de messages sur les sauvegardes après le premier message d’enregistrement Modifié (aucune notification dans le dossier parent)
Effectuer une opération de recherche
fnevSearchComplete
Dossier de recherche de la banque de messages
Nouveau message
fnevNewMail
Magasin de messages

Remarque

Lorsque vous recevez une notification de modification d’objet, n’oubliez pas que la partie du tableau de balises de propriété de la structure OBJECT_NOTIFICATION pointée par le paramètre lpNotifications dans l’appel OnNotify peut ou non être NULL. Les fournisseurs de magasins de messages ne sont pas tenus d’insérer des informations de propriété dans ce tableau, contrairement à la plupart des fournisseurs. Assurez-vous que votre méthode OnNotify peut gérer le cas où le pointeur lpPropTagArray est NULL.

Pour la plupart, sinon pour toutes les notifications d’objet, mettez à jour l’affichage du ou des dossiers affectés.