如何从Exchange Server 2007 SP1获取最新的SyncState

时间:2014-03-07 14:38:05

标签: c# exchangewebservices exchange-server-2007 ews-managed-api

我正在使用EWS api进行电子邮件操作 当最初用户设置他的帐户时,我只需要收集他的帐户的最新同步状态。我的CRON工作会定期检查从那时起的最新变化 这是代码

var service         = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url         = new Uri("https://" + data.ServerAddress + "/ews/Exchange.asmx");
service.Credentials = new NetworkCredential(data.EMail, data.Password);
ServicePointManager.ServerCertificateValidationCallback = (xyzxyz, certificate, chain, sslPolicyErrors) => true;
ChangeCollection<ItemChange> icc = service.SyncFolderItems(new FolderId(WellKnownFolderName.Inbox),
                                                           PropertySet.FirstClassProperties,
                                                           null,
                                                           512,
                                                           SyncFolderItemsScope.NormalItems,
                                                           null );
return icc.SyncState;

问题在于用户最初设置帐户时收集SyncState 假设用户在收件箱中有600封电子邮件。当我使用上面的代码请求syncstate时,我得到syncstate,它对前512个电子邮件有效。我将不得不再打一次电话来获得有效且最终的下一个同步状态。这将增加用户设置其帐户的等待时间。如果用户在收件箱中有10000封邮件,则需要对EWS进行20次调用才能获得最终的SyncState 如何通过一次调用EWS获得最终或最新的SyncState?

1 个答案:

答案 0 :(得分:3)

您无法在一次通话中获得最新的同步状态,请参阅EWS. How to get latest SyncState without initial synchronization?。请注意,从Exchange 2010 SP2开始,EWS会返回从最新到最旧的项目,因此用户将首先获得最新项目 - 他们不必等待所有20个呼叫。

相关问题