2015-10-03 51 views
0

我有一个Windows服务与模仿自动化。 此服务已为每个邮箱都有流式订阅(按亲和性分组),工作正常(收到事件)。SyncFolderItems多个邮箱

我现在要做的是处理服务未运行时的情况。所以,当服务开始时,我需要检查所有的邮箱“错过”的项目。

你知道该怎么做吗?

对于单个邮箱,我可以打电话(使用syncstate)

exchangeService.SyncFolderItems 

我已经测试了单个邮箱,它也能正常工作。 但如何为特定邮箱做到这一点?我没有找到任何方法用邮箱参数调用SyncFolderItems。 我正在监视的文件夹可能是“自定义”文件夹(即特定名称)。

回答

0

我现在想要做的是处理服务未运行时的情况。所以,当服务开始时,我需要检查所有的邮箱“错过”的项目。

SyncFolderItems应该工作好了,像在EWS工作在邮箱文件夹的情况下几乎一切。如果您使用EWS模拟,您只需通过每个SyncFolderItems调用中的普通模拟标头发送消息,则还应该在请求上设置x-anchormailbox标头(其他方面,您可能在Office365上没有CAS服务器类型错误),但与流式通知不同不需要担心亲和力,因为SyncState必不可少的作为客户端的水印或复制状态标记。

我测试过的单个邮箱,它也正常工作。但如何为特定的邮箱做到这一点?我没有找到任何方法用邮箱参数调用SyncFolderItems。我正在监视的文件夹可能是“自定义”文件夹(即特定名称)。

这是一个有点不清楚,如果你有自定义的文件夹,那么你就需要使SyncFolderItem请求如果它的默认文件夹(如收件箱,SentItem等之前先找到该文件夹​​的EWSId(使用FindFolder) )然后只需使用WellKnowFolder枚举,并且可以使用FolderId重载指定您访问的邮箱。但是,如果您使用的EWS模拟不重要,因为邮箱上下文将来自您正在模拟的凭据。

干杯 格伦

+0

事实上,根据不同的应用配置,我会订阅收件箱或具有自定义名称的子文件夹。你的意思是'FolderId'在交换服务器上是唯一的吗?我认为这是邮箱的独特之处。所以使用FolderId我不需要指定邮箱?谢谢 – Fabske

+0

更多详细信息:我使用模拟,即我与用户X连接,但我必须为用户Y处理邮箱订阅 – Fabske

+0

是的,FolderId在Exchange组织中是全局唯一的请参阅https://msdn.microsoft.com/zh-cn/ -us/library/office/dn605828(v = exchg.150).aspx。如果您拥有EWSId,则如果您使用了专有文件夹Id,则不需要邮箱名称。如果您使用自定义文件夹,则需要首先使用FindFolders查找该文件夹ewsId。 –