我正在使用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?
答案 0 :(得分:3)
您无法在一次通话中获得最新的同步状态,请参阅EWS. How to get latest SyncState without initial synchronization?。请注意,从Exchange 2010 SP2开始,EWS会返回从最新到最旧的项目,因此用户将首先获得最新项目 - 他们不必等待所有20个呼叫。