Freigeben über


Behandeln von Nachrichtenspeicherbenachrichtigungen

Gilt für: Outlook 2013 | Outlook 2016

Um sich für Nachrichtenspeicherbenachrichtigungen zu registrieren, rufen Sie entweder die IMAPISession::Advise - oder IMsgStore::Advise-Methode auf, und geben Sie einen Nachrichtenspeicher-, Ordner- oder Nachrichteneintragsbezeichner im Inhalt des lpEntryID-Parameters an. Nachrichtenspeicheranbieter unterstützen sowohl Objekt- als auch Tabellenbenachrichtigungen. Ob Sie sich mit bestimmten Nachrichtenspeicherobjekten, mit der Ordnerhierarchie und den Inhaltstabellen, die diese Objekte beschreiben, oder mit Objekten und Tabellen registrieren, hängt von den erwarteten Benachrichtigungen, den Aufrufen, die Sie zum Ausführen von Vorgängen ausführen, und davon ab, wie der Nachrichtenspeicheranbieter Benachrichtigungen unterstützt.

Da MAPI Flexibilität bei der Unterstützung von Benachrichtigungen durch Anbieter ermöglicht, beachten Sie, dass Sie nicht immer denselben Benachrichtigungstyp als Reaktion auf ein bestimmtes Ereignis von allen Nachrichtenspeicheranbietern erhalten. Einige Nachrichtenspeicheranbieter unterstützen Benachrichtigungen überhaupt nicht. Um festzustellen, ob der von Ihnen verwendete Nachrichtenspeicher Benachrichtigungen unterstützt, suchen Sie in der eigenschaft PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) nach dem STORE_NOTIFY_OK Bit.

An einem Ende des Spektrums der Nachrichtenspeicheranbieter, die Benachrichtigungen unterstützen, sind die Anbieter, die "umfangreiche" Benachrichtigungen generieren; Diese Anbieter senden beschreibende Benachrichtigungen für alle registrierten Beratungsquellen. Am anderen Ende befinden sich die Nachrichtenspeicheranbieter, die begrenzte Benachrichtigungen unterstützen. Diese Anbieter senden allgemeine Benachrichtigungen für eine begrenzte Anzahl von Beratungsquellen.

Wenn Sie z. B. eine Nachricht in einen Ordner kopieren, bei dem Sie sich registriert haben, um sowohl Benachrichtigungen zum Kopieren von Objekten als auch Benachrichtigungen zum Verschieben von Objekten zu erhalten, erhalten Sie möglicherweise die Benachrichtigung zum Kopieren des Objekts. Ob Sie es erhalten oder nicht, hängt von:

  • Die Methode, die Sie zum Ausführen des Kopiervorgangs aufgerufen haben. Dies kann IMAPIFolder::CopyMessages, IMAPIProp::CopyTo oder IMAPIProp::CopyProps sein.

  • Wie der Nachrichtenspeicheranbieter die Kopiermethode implementiert.

  • Gibt an, ob der Nachrichtenspeicheranbieter objektkopierte Benachrichtigungen in Ordner unterstützt.

Da es keine strengen Richtlinien gibt, die beschreiben, wie Ereignisbenachrichtigungen für Nachrichtenspeicheranbieter implementiert werden, können Clients kein konsistentes Verhalten erwarten. MAPI gibt Empfehlungen, wie Nachrichtenspeicheranbieter Ereignisbenachrichtigungen implementieren, und in der folgenden Tabelle werden diese Empfehlungen beschrieben. Lesen Sie die Tabelle wie folgt: Nachdem Sie den Vorgang in der ersten Spalte ausgeführt haben, erwarten Sie, dass Sie eine Benachrichtigung des in der zweiten Spalte aufgeführten Typs erhalten, wenn Sie sich für diesen Typ mit dem in der dritten Spalte aufgeführten Objekt registriert haben. Nachdem Sie beispielsweise einen Ordner erstellt haben, erhalten Sie nur dann eine fnevObjectCreated-Benachrichtigung , wenn Sie sich für fnevObjectCreated-Benachrichtigungen beim Nachrichtenspeicher registriert haben.

Vorgang Ereignistyp Quelle für Beratung
Erstellen eines Ordners
fnevObjectCreated
Nachrichtenspeicher
Löschen eines Ordners
fnevObjectDeleted
Ordner "Nachrichtenspeicher gelöscht"
Verschieben eines Ordners aus einem Ordner in einen anderen
fnevObjectMoved
Ordner "Nachrichtenspeicher verschoben"
Kopieren eines Ordners aus einem Ordner in einen anderen
fnevObjectCopied
Nachrichtenspeicher und kopierter Ordner (keine fnevObjectCreated-Benachrichtigung für die neue Kopie des Ordners gesendet)
Änderung in einer berechneten Ordnereigenschaft (PR_SUBFOLDERS (PidTagSubfolders), PR_CONTENT_UNREAD (PidTagContentUnreadCount), PR_CONTENT_COUNT (PidTagContentCount)
fnevObjectModified
Nachrichtenspeicher Ordner geändert (keine Benachrichtigung für übergeordneten Ordner)
Erstellen einer Nachricht
fnevObjectCreated
Nachrichtenspeicher
Löschen einer Nachricht, wodurch eine Änderung in der eigenschaft PR_CONTENT_COUNT des übergeordneten Ordners verursacht wird
fnevObjectDeleted
Nachrichtenspeicher Gelöschte Nachricht
Verschieben einer Nachricht aus einem Ordner in einen anderen
fnevObjectMoved
Nachricht im Nachrichtenspeicher verschoben
Kopieren einer Nachricht aus einem Ordner in einen anderen
fnevObjectCopied
Nachrichtenspeicher kopierte Nachricht (Keine fnevObjectCreated-Benachrichtigung für neue Kopie der Nachricht)
Speichern einer Nachricht, wodurch eine Änderung in der eigenschaft PR_CONTENT_COUNT des übergeordneten Ordners verursacht wird
fnevObjectCreated
Nachrichtenspeicher nur beim ersten Speichern
Speichern einer Nachricht
fnevObjectModified
Nachrichtenspeicher bei speichern nach der ersten geänderten Nachricht (keine Benachrichtigung im übergeordneten Ordner)
Abschließen eines Suchvorgangs
fnevSearchComplete
Ordner "Nachrichtenspeichersuche"
Neue Nachricht
fnevNewMail
Nachrichtenspeicher

Hinweis

Wenn Sie eine Objektänderungsbenachrichtigung erhalten, denken Sie daran, dass der Eigenschaftstagarrayteil der OBJECT_NOTIFICATION Struktur, auf die der lpNotifications-Parameter im OnNotify-Aufruf verweist, NULL sein kann oder nicht. Nachrichtenspeicheranbieter müssen keine Eigenschafteninformationen in dieses Array einfügen und die meisten nicht. Stellen Sie sicher, dass Ihre OnNotify-Methode den Fall behandeln kann, in dem der lpPropTagArray-Zeiger NULL ist.

Aktualisieren Sie für die meisten, wenn nicht alle Objektbenachrichtigungen, die Ansicht des betroffenen Ordners.For most, if not all object notifications, update the view of theaffected folder(en).