我正在使用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封电子邮件。当我请求使用以上代码进行同步时,我得到的同步状态对前512封电子邮件有效。我将不得不再打一次电话才能获得下一个同步状态,该状态是有效且最终的。这将增加用户设置其帐户的等待时间。如果用户在收件箱中有10000封邮件,则需要对EWS进行20次调用以获取最终的SyncState。
如何通过一次EWS获得最终或最新的SyncState?
您无法在单个呼叫中获得最新的同步状态,请参见EWS。如何在没有初始同步的情况下获取最新的SyncState?。请注意,从Exchange 2010 SP2开始,EWS从最新到最旧返回项目,因此用户将首先获得他们的最新项目-他们不必等待所有20个呼叫。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句