Frage

Ich möchte das Alter der Nachrichten in einem Exchange-Postfach berechnen, dass sie dort für mindestens eine Minute, bevor unser Programm (C ++, MAPI) verarbeitet sie sitzen zu lassen. Auf diese Weise der Spam-Filter wir verwenden sollten genügend Zeit haben, ihre Arbeit zu tun.

Da die Zeit auf dem PC, auf dem unser Programm läuft möglicherweise aus der Zeit vom Exchange-Server verwendet, unterschiedlich sein, unser Programm hat die Serverzeit über MAPI zu lesen.

Gibt es eine elegante Lösung dafür? Eine Möglichkeit, die ich denken kann ist, einige Artikel zu ändern und sofort lesen seine PR_LAST_MODIFICATION_TIME , aber ich möchte, dass vermeiden.

Bearbeiten
Unser Programm ist ein Batch-Job, den alle 10 Minuten und liest das Journalpostfach ausgeführt wird.

War es hilfreich?

Lösung

Ich nehme an, Sie sind eine MAPI-Ereignisbenachrichtigung erhalten, wenn die Nachricht in dem Exchange-Postfach eintrifft. Ich würde vorschlagen, diese Nachrichten in eine Warteschlange drücken und warten n Sekunden (zum Beispiel 60 s), bevor die Nachricht zu verarbeiten. Da die Zeit, um das Benachrichtigungsereignis relativ ist, wird es mit Bezug auf Taktdrift zwischen den Computern kein Problem sein.

Beim Start der Anwendung würden Sie gezwungen sein, dies zu tun für Nachrichten wieder vorhandenen, aber ich würde nicht vorstellen, dass dies ein Problem darstellen würde.

Andere Tipps

Sie können PR_MESSAGE_DELIVERY_TIME verwenden.

Wie pro MSDN :

  

Die PR_MESSAGE_DELIVERY_TIME Eigenschaft beschreibt die Zeit, die Nachricht auf dem Server, anstatt die Download-Zeit gespeichert wurde, wenn der Transportanbieter die Nachricht vom Server auf dem lokalen Speicher kopiert.

Anders als das - wenn Sie Ihre Lösung auf dem Client läuft sowieso - warum nicht die Client-Zeit in erster Linie verwenden? Falsche Uhr oder nicht, für die relativen Zeiten (zum Beispiel „eine Minute nach ...“) soll keinen Unterschied machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top