2

我想计算 Exchange 邮箱中邮件的年龄,以确保它们在我们的程序(C++、MAPI)处理它们之前至少在那里停留一分钟。这样我们使用的垃圾邮件过滤器应该有足够的时间来完成它的工作。

因为我们的程序运行的 PC 上的时间可能与 Exchange 服务器使用的时间不同,所以我们的程序必须通过 MAPI 读取服务器时间。

有没有优雅的解决方案?我能想到的一种方法是修改一些 Item 并立即阅读它的PR_LAST_MODIFICATION_TIME,但我想避免这种情况。

编辑:
我们的程序是一个批处理作业,每 10 分钟运行一次并读取日志邮箱。

4

2 回答 2

1

我认为当邮件到达 Exchange 邮箱时,您会收到 MAPI 事件通知。我建议将这些消息推入队列并n在处理消息之前等待几秒钟(例如 60 秒)。由于时间与通知事件相关,因此计算机之间的时钟漂移不会有问题。

在启动您的应用程序时,您将被迫再次对现有消息执行此操作,但我不认为这会造成问题。

于 2008-10-08T01:01:32.600 回答
0

您可以使用PR_MESSAGE_DELIVERY_TIME.

根据MSDN

PR_MESSAGE_DELIVERY_TIME属性描述了消息存储在服务器上的时间,而不是传输提供程序将消息从服​​务器复制到本地存储时的下载时间。

除此之外 - 当您的解决方案无论如何都在客户端上运行时 - 为什么不首先使用客户端时间?时钟是否不正确,对于相对时间(例如“...之后一分钟”),这应该没有区别。

于 2008-10-07T12:25:37.323 回答