我正在使用EWS api進行電子郵件操作。
最初用戶設置他的賬戶時,我只需要收集他賬戶的最新同步狀態。我的CRON工作會定期檢查從那時起的最新變化。
這裏是收集SyncState代碼如何從Exchange Server 2007 SP1獲取最新的SyncState
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;
問題在於,當用戶最初設定了他的賬號。
假設用戶在收件箱中有600封電子郵件。當我用上面的代碼申請syncstate時,我得到了對前512個郵件有效的syncstate。我將不得不再打一次電話才能獲得有效且最終的下一個同步狀態。這將增加用戶設置其賬戶的等待時間。如果用戶在收件箱中有10000封郵件,則需要向EWS發出20個呼叫才能獲得最終的SyncState。
如何通過一次調用EWS獲取最終或最新的SyncState?