public List <ExchangeMailFolder> GetMailboxFolders(string mailServerId, string mailboxName, string mailboxPassword, string senderEmailAddress, string folderClassName) { if (string.IsNullOrEmpty(mailboxPassword)) { mailboxPassword = GetExistingMailboxPassword(senderEmailAddress, UserConnection); } var credentials = new Mail.Credentials { UserName = mailboxName, UserPassword = mailboxPassword, ServerId = Guid.Parse(mailServerId), UseOAuth = GetSettingsHasOauth(senderEmailAddress, UserConnection) }; SetServerCertificateValidation(); var exchangeUtility = new ExchangeUtilityImpl(); Exchange.ExchangeService service = exchangeUtility.CreateExchangeService(UserConnection, credentials, senderEmailAddress, true); var filterCollection = new Exchange.SearchFilter.SearchFilterCollection(Exchange.LogicalOperator.Or); var filter = new Exchange.SearchFilter.IsEqualTo(Exchange.FolderSchema.FolderClass, folderClassName); var nullfilter = new Exchange.SearchFilter.Exists(Exchange.FolderSchema.FolderClass); filterCollection.Add(filter); filterCollection.Add(new Exchange.SearchFilter.Not(nullfilter)); string[] selectedFolders = null; var idPropertySet = new Exchange.PropertySet(Exchange.BasePropertySet.IdOnly); Exchange.Folder draftFolder = null; if (folderClassName == ExchangeConsts.NoteFolderClassName) { Exchange.Folder inboxFolder = Exchange.Folder.Bind(service, Exchange.WellKnownFolderName.Inbox, idPropertySet); if (inboxFolder != null) { selectedFolders = new[] { inboxFolder.Id.UniqueId }; } draftFolder = Exchange.Folder.Bind(service, Exchange.WellKnownFolderName.Drafts, idPropertySet); } List <ExchangeMailFolder> folders = exchangeUtility.GetHierarhicalFolderList(service, Exchange.WellKnownFolderName.MsgFolderRoot, filterCollection, selectedFolders); if (folders != null && folders.Any()) { folders[0] = new ExchangeMailFolder { Id = folders[0].Id, Name = mailboxName, ParentId = string.Empty, Path = string.Empty, Selected = false }; if (draftFolder != null) { folders.Remove(folders.FirstOrDefault(e => e.Path == draftFolder.Id.UniqueId)); } } return(folders); }
/// <summary> /// <see cref="IExchangeFoldersManger.GetRemoteFolderIdsList"/> /// </summary> public List <string> GetRemoteFolderIdsList(string senderEmailAddress) { var service = new ExchangeUtilityImpl().CreateExchangeService(UserConnection, senderEmailAddress); var exchangeSettings = new EmailExchangeSettings(UserConnection, senderEmailAddress); List <Exchange.Folder> folders = new List <Exchange.Folder>(); if (!exchangeSettings.LoadAll) { folders = SafeBindFolders(service, exchangeSettings.RemoteFolderUIds.Keys); } return(folders.Count > 0 ? folders.Select(f => f.Id.UniqueId).ToList() : new List <string>()); }