通过 MAPI 读取 Exchange 服务器时间
Reading the Exchange server time via MAPI
我想计算 Exchange 邮箱中邮件的期限,以确保它们在我们的程序(C++,MAPI)处理它们之前至少保留一分钟。这样,我们使用的垃圾邮件过滤器应该有足够的时间来完成它的工作。
由于运行程序的 PC 上的时间可能与 Exchange 服务器使用的时间不同,因此程序必须通过 MAPI 读取服务器时间。
有没有优雅的解决方案?我能想到的一种方法是修改某些项目并立即读取其PR_LAST_MODIFICATION_TIME,但我想避免这种情况。
编辑:
我们的程序是一个批处理作业,每 10 分钟运行一次并读取日记邮箱。
我假定您在邮件到达 Exchange 邮箱时收到 MAPI 事件通知。我建议将这些消息推送到队列中并等待 n
秒(例如 60 秒)再处理消息。由于时间相对于通知事件,因此计算机之间的时钟漂移不会有问题。
在启动应用程序时,您将被迫再次对现有消息执行此操作,但我不会想象这会带来问题。
您可以使用PR_MESSAGE_DELIVERY_TIME
.
根据 MSDN:
PR_MESSAGE_DELIVERY_TIME
属性描述邮件在服务器上存储的时间,而不是传输提供程序将邮件从服务器复制到本地存储的下载时间。
除此之外 - 当您的解决方案无论如何都在客户端上运行时 - 为什么不首先使用客户端时间?无论时钟是否正确,对于相对时间(例如"一分钟后......"),这应该没有区别。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- C 将NTP服务器返回的时间转换为字符串
- 我可以在接受服务器上延长TCP握手持续时间吗?
- 我怎么知道我的服务器是否在一段时间内没有连接
- 服务器在 16000 个请求后挂起一段时间
- 内部分布式时间服务器实现
- 使用SNTP(Windows C )从服务器获取时间/日期
- C++ COM 服务器内存使用量随着时间的推移而增加 - 使用 WinDBG 的分析
- 使用设置系统时间调整重置时钟速率,而无需使用时间服务器
- c ++:TCP服务器"bind"功能失败(errno 98),如果我在两次连续应用程序启动之间没有等待足够的时间
- 使用dst和boost将当前服务器时间转换为时区
- 将服务器UTC时间转换为客户端本地时间
- TCP服务器为每个客户端设置超时时间
- C++基于 TCP 的服务器套接字需要一段时间才能返回 10054 错误。它不会立即返回
- 如何使用c++和PHP在客户端和云服务器之间正确存储时间戳和偏移量
- 服务器日期时间vs客户端日期时间
- 通过 MAPI 读取 Exchange 服务器时间