通过 MAPI 读取 Exchange 服务器时间

Reading the Exchange server time via MAPI

本文关键字:服务器 时间 Exchange 读取 MAPI 通过      更新时间:2023-10-16

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

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

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

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

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

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

您可以使用PR_MESSAGE_DELIVERY_TIME .

根据 MSDN:

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

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