/// <summary> /// Sync folder hierarchy. /// </summary> /// <param name="exchangeService">Exchange service.</param> /// <returns></returns> public static async Task SyncFolderHierarchy(ExchangeService exchangeService) { ChangeCollection <MailFolderChange> folderChange = null; string syncState = null; do { folderChange = await exchangeService.SyncFolderHierarchy(null, syncState); syncState = folderChange.SyncState; foreach (MailFolderChange mailFolderChange in folderChange.Items) { Assert.AreEqual( ChangeType.Created, mailFolderChange.ChangeType); } } while (folderChange.MoreAvailable); SearchFilter inbox = new SearchFilter.IsEqualTo(MailFolderObjectSchema.DisplayName, "Inbox"); FindMailFolderResults result = await exchangeService.FindFolders(WellKnownFolderName.MsgFolderRoot, inbox, new MailFolderView()); MailFolder mf = new MailFolder(exchangeService); mf.DisplayName = "kakakoko"; await mf.SaveAsync(result.MailFolders[0]); do { folderChange = await exchangeService.SyncFolderHierarchy(null, syncState); syncState = folderChange.SyncState; Assert.AreEqual( 1, folderChange.TotalCount); Assert.AreEqual( ChangeType.Created, folderChange.Items[0].ChangeType); } while (folderChange.MoreAvailable); await mf.DeleteAsync(); do { folderChange = await exchangeService.SyncFolderHierarchy(null, syncState); syncState = folderChange.SyncState; Assert.AreEqual( 1, folderChange.TotalCount); Assert.AreEqual( ChangeType.Deleted, folderChange.Items[0].ChangeType); } while (folderChange.MoreAvailable); }
/// <summary> /// Find folders with extended filter. /// </summary> /// <param name="exchangeService"></param> /// <returns></returns> public static async Task FindFoldersWithExtendedFilter(ExchangeService exchangeService) { MailFolderView folderView = new MailFolderView(); folderView.PropertySet.Add(MailFolderObjectSchema.TotalItemCount); ExtendedPropertyDefinition extendedPropertyDefinition1 = new ExtendedPropertyDefinition(MapiPropertyType.Integer, 0x0FFE); folderView.PropertySet.Add(extendedPropertyDefinition1); SearchFilter searchfilter = new SearchFilter.IsEqualTo(MailFolderObjectSchema.DisplayName, "Inbox"); FindMailFolderResults findMailFolderResults = await exchangeService.FindFolders("MsgFolderRoot", searchfilter, folderView); }
/// <summary> /// Delete folder if it exist. /// </summary> /// <param name="folderName"></param> /// <param name="exchangeService"></param> /// <param name="folderRoot"></param> internal static async Task DeleteFolderIfExist(string folderName, ExchangeService exchangeService, WellKnownFolderName folderRoot) { FindMailFolderResults findFolders = await exchangeService.FindFolders( folderRoot, new MailFolderView()); foreach (MailFolder mailFolder in findFolders) { if (mailFolder.DisplayName == folderName) { await mailFolder.DeleteAsync(); } } }
/// <summary> /// Find folders. /// </summary> /// <param name="exchangeService">Exchange service.</param> /// <returns></returns> public static async Task FindFolders(ExchangeService exchangeService) { // TODO: Finish test. FindMailFolderResults findMailFolderResults = await exchangeService.FindFolders(WellKnownFolderName.MsgFolderRoot, new MailFolderView()); MailFolderView folderView = new MailFolderView(); folderView.PropertySet.Add(MailFolderObjectSchema.TotalItemCount); ExtendedPropertyDefinition extendedPropertyDefinition1 = new ExtendedPropertyDefinition(MapiPropertyType.Long, 0x340F); folderView.PropertySet.Add(extendedPropertyDefinition1); SearchFilter searchfilter = new SearchFilter.IsEqualTo(MailFolderObjectSchema.DisplayName, "Inbox"); findMailFolderResults = await exchangeService.FindFolders("MsgFolderRoot", searchfilter, folderView); }
/// <summary> /// Get mail folders request. /// </summary> public static async Task GetMailFolders(ExchangeService exchangeService) { FindMailFolderResults findFoldersResults = null; MailFolderView folderView = new MailFolderView(10, 0); do { findFoldersResults = await exchangeService.FindFolders(WellKnownFolderName.MsgFolderRoot, folderView); folderView.Offset += folderView.PageSize; foreach (MailFolder folder in findFoldersResults) { Assert.IsNotNull(folder.EntityService); } } while (findFoldersResults.MoreAvailable); }
/// <summary> /// Test mail folder sync. /// </summary> /// <param name="exchangeService"></param> public static async Task SyncMailFolders(ExchangeService exchangeService) { string folder1Name = "TempSyncFolder1"; string folder2Name = "TempSyncFolder2"; MailFolder msgFolderRoot = await exchangeService.GetAsync <MailFolder>( new EntityPath( WellKnownFolderName.MsgFolderRoot.ToString(), typeof(MailFolder))); FindMailFolderResults findFolders = await exchangeService.FindFolders( WellKnownFolderName.MsgFolderRoot, new MailFolderView(30, 0)); foreach (MailFolder mailFolder in findFolders) { if (mailFolder.DisplayName == folder1Name || mailFolder.DisplayName == folder2Name) { await mailFolder.DeleteAsync(); } } string syncState = null; int counter = 0; ChangeCollection <MailFolderChange> sync; do { sync = await exchangeService.SyncFolderHierarchy(null, syncState); syncState = sync.SyncState; counter++; } while (sync.MoreAvailable || counter == 4); Assert.IsFalse(sync.MoreAvailable); MailFolder folder1 = new MailFolder(exchangeService); folder1.DisplayName = folder1Name; await folder1.SaveAsync(msgFolderRoot); MailFolder folder2 = new MailFolder(exchangeService); folder2.DisplayName = folder2Name; await folder2.SaveAsync(msgFolderRoot); sync = await exchangeService.SyncFolderHierarchy(null, syncState); syncState = sync.SyncState; Assert.AreEqual( 2, sync.TotalCount); foreach (MailFolderChange change in sync) { Assert.IsTrue(change.ChangeType == ChangeType.Created); } await folder1.DeleteAsync(); await folder2.DeleteAsync(); sync = await exchangeService.SyncFolderHierarchy(null, syncState); Assert.IsTrue(sync.TotalCount == 2); foreach (MailFolderChange change in sync) { Assert.IsTrue(change.ChangeType == ChangeType.Deleted); } }