通过MAPI读取Exchange服务器时间

时间:2008-10-07 12:15:38

标签: c++ exchange-server mapi

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以使用PR_MESSAGE_DELIVERY_TIME

根据MSDN

  

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

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