Question

Je voudrais calculer l'âge des messages dans une boîte aux lettres Exchange pour m'assurer qu'ils restent là au moins une minute avant que notre programme (C ++, MAPI) les traite. Ainsi, le filtre anti-spam que nous utilisons devrait disposer de suffisamment de temps pour faire son travail.

Etant donné que l'heure sur le PC où notre programme est exécuté peut être différente de celle utilisée par le serveur Exchange, notre programme doit lire l'heure du serveur via MAPI.

Existe-t-il une solution élégante? Une façon dont je peux penser est de modifier un élément et de lire immédiatement son PR_LAST_MODIFICATION_TIME , mais j'aimerais éviter cela.

Modifier:
Notre programme est un travail par lots qui s'exécute toutes les 10 minutes et lit la boîte aux lettres du journal.

Était-ce utile?

La solution

Je suppose que vous recevez une notification d'événement MAPI lorsque le message arrive dans la boîte aux lettres Exchange. Je suggère de placer ces messages dans une file d'attente et d'attendre n secondes (par exemple 60 secondes) avant de traiter le message. Puisque l'heure est relative à l'événement de notification, il n'y aura pas de problème de dérive d'horloge entre les ordinateurs.

Au démarrage de votre application, vous seriez obligé de le faire pour les messages existants, mais je n’imagine pas que cela poserait un problème.

Autres conseils

Vous pouvez utiliser PR_MESSAGE_DELIVERY_TIME .

Conformément à la MSDN :

  

La propriété PR_MESSAGE_DELIVERY_TIME décrit l'heure à laquelle le message a été stocké sur le serveur, plutôt que l'heure du téléchargement lorsque le fournisseur de transport a copié le message du serveur dans le magasin local.

Autre que cela - quand votre solution fonctionne sur le client, pourquoi ne pas utiliser le temps client en premier lieu? Horloge incorrecte ou non, pour les temps relatifs (par exemple, "une minute après ..."), cela ne devrait faire aucune différence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top