public static async Task<(UniqueId, IMailFolder?)> FindIdByMessageIdHeader(this IMailFolder folder, string? messageIdHeaderValue, bool recursive, bool skipParent, bool onlyImmediateChildren = false) { if (messageIdHeaderValue == null) { return (UniqueId.Invalid, null); } await folder.OpenAsync(FolderAccess.ReadOnly); if (!skipParent) { var hit = (await folder.SearchAsync(SearchQuery.HeaderContains("Message-ID", messageIdHeaderValue))).FirstOrDefault(); // sometimes there are more than one if the companion got terminated; ignore this, think later about handling this if (hit.IsValid) return (hit, folder); } var subfolders = await folder.GetSubfoldersAsync(false); foreach (var subFolder in subfolders) { var hit2 = await subFolder.FindIdByMessageIdHeader(messageIdHeaderValue, recursive && onlyImmediateChildren, false, onlyImmediateChildren); if (hit2.Item1.IsValid) { return hit2; } } return (UniqueId.Invalid, null); }
async void LoadChildFolders(IMailFolder folder, ImapClient pClient) { Client = pClient; var children = await folder.GetSubfoldersAsync(); LoadChildFolders(folder, children, Client); }
public async Task <IEnumerable <IMailFolder> > GetSubFolders(IMailFolder parentFolder) { return(await PolicyWrapper.WrapRetryOnNotConnected(async() => { return await parentFolder.GetSubfoldersAsync().ConfigureAwait(false); }, EnsureConnected).ConfigureAwait(false)); }
async Task LoadSubfoldersAsync(IMailFolder folder) { var subfolders = await folder.GetSubfoldersAsync(); var sorted = new List <IMailFolder> (subfolders); sorted.Sort(new FolderComparer()); await LoadSubfoldersAsync(folder, sorted); }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders (Section foldersSection, IMailFolder folder) { if (!folder.IsNamespace) { foldersSection.Add (new StyledStringElement (folder.FullName, () => OpenFolder (folder))); } var subfolders = await folder.GetSubfoldersAsync (); foreach (var sf in subfolders) await LoadChildFolders (foldersSection, sf); }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders(List <IMailFolder> folders, IMailFolder imapFolder) { if (!string.IsNullOrWhiteSpace(imapFolder.FullName)) { folders.Add(imapFolder); } var subfolders = await imapFolder.GetSubfoldersAsync(); foreach (var sf in subfolders) { await LoadChildFolders(folders, sf); } }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders(List <IMailFolder> folders, IMailFolder folder) { if (!folder.IsNamespace) { folders.Add(folder); } var subfolders = await folder.GetSubfoldersAsync(); foreach (var sf in subfolders) { await LoadChildFolders(folders, sf); } }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders (Section foldersSection, IMailFolder folder) { if (!folder.IsNamespace) { foldersSection.Add (new StyledStringElement (folder.FullName, () => OpenFolder (folder))); } if (folder.Attributes.HasFlag (FolderAttributes.HasNoChildren)) return; var subfolders = await folder.GetSubfoldersAsync (); foreach (var sf in subfolders) await LoadChildFolders (foldersSection, sf); }
protected virtual async IAsyncEnumerable <IMailFolder> GetFolderRecursivelyAsync(IMailFolder mailFolder) { foreach (var subFolder in await mailFolder.GetSubfoldersAsync(false, CancellationToken.None)) { if ((await subFolder.GetSubfoldersAsync(false, CancellationToken.None)).Any()) { await foreach (var folder in GetFolderRecursivelyAsync(subFolder)) { yield return(folder); } } yield return(subFolder); } }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders(Section foldersSection, IMailFolder folder) { if (!folder.IsNamespace) { foldersSection.Add(new StyledStringElement(folder.FullName, () => OpenFolder(folder))); } var subfolders = await folder.GetSubfoldersAsync(); foreach (var sf in subfolders) { await LoadChildFolders(foldersSection, sf); } }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders(Section foldersSection, IMailFolder imapFolder) { if (!string.IsNullOrWhiteSpace(imapFolder.FullName)) { foldersSection.Add(new StyledStringElement(imapFolder.FullName, () => OpenFolder(imapFolder))); } var subfolders = await imapFolder.GetSubfoldersAsync(); foreach (var sf in subfolders) { await LoadChildFolders(foldersSection, sf); } }
// Recursive function to load all folders and their subfolders async Task LoadChildFolders(List <IMailFolder> folders, IMailFolder folder) { if (!folder.IsNamespace) { folders.Add(folder); } if (folder.Attributes.HasFlag(FolderAttributes.HasNoChildren)) { return; } var subfolders = await folder.GetSubfoldersAsync(); foreach (var sf in subfolders) { await LoadChildFolders(folders, sf); } }
private async Task LoadFromFolderAsync(IMailBox mailBox, IMailFolder parentFolder) { var folders = await parentFolder.GetSubfoldersAsync(); using (var folderEnumerator = folders.GetEnumerator()) { while (folderEnumerator.MoveNext()) { if (MustBeOpen(folderEnumerator.Current)) { var folder = folderEnumerator.Current; await folder.OpenAsync(FolderAccess.ReadOnly); if (folder.Count > 0) { for (var i = folder.Count - 1; i > 0; i--) { var message = await folder.GetMessageAsync(i); // только такая проверка т.к. в POP3 без вариантов if (await MustBeSavedAsync(mailBox, message)) { await SaveMessageAsync(mailBox, message); continue; } //если письмо сохранять не нужно то сразу выходим break; } } if ((folderEnumerator.Current.Attributes & FolderAttributes.HasChildren) != 0) { await LoadFromFolderAsync(mailBox, folderEnumerator.Current); } } } } }
public async Task <long> ReadSubFolders() { Stopwatch stopWhatch = new Stopwatch(); stopWhatch.Start(); var serverFolders = await serverFolder.GetSubfoldersAsync(); foreach (var folder in serverFolders) { if (Nodes.Count(x => x.Name == folder.Name) == 0) { var newFolder = new MailFolder(folder); Nodes.Add(newFolder); await newFolder.ReadFolder(); await newFolder.ReadSubFolders(); } } stopWhatch.Stop(); return(stopWhatch.ElapsedMilliseconds); }
private Task <List <string> > GetFolderNamesAsync(ImapClient client, IMailFolder folder, IProgress <string> progress) { return(Task.Run(async() => { progress.Report($"Getting folder names."); List <string> folderNames = new List <string>(); folderNames.Add(folder.FullName); var subfolders = await folder.GetSubfoldersAsync(StatusItems.None); foreach (var subfolder in subfolders) { //progress.Report($"Folder name: {subfolder.FullName}"); if (!folderNames.Contains(subfolder.FullName)) { folderNames.Add(subfolder.FullName); } } progress.Report($"Finished getting folder names."); return folderNames; })); }
async void LoadChildFolders(IMailFolder folder) { var children = await folder.GetSubfoldersAsync(); LoadChildFolders(folder, children); }
async Task LoadChildFoldersAsync(IMailFolder folder) { var children = await folder.GetSubfoldersAsync(); await LoadChildFoldersAsync(folder, children); }
async void LoadChildFolders (IMailFolder folder) { var children = await folder.GetSubfoldersAsync (); LoadChildFolders (folder, children); }