internal CommonFolderCollection GetFolders() { var folders = new CommonFolderCollection(this); folders.AddRangeInternal(GetFolders("", folders, null, true)); return folders; }
internal FolderCollection GetFolders(string path, CommonFolderCollection commonFolders, Folder parent = null, bool isFirstLevel = false) { var result = new FolderCollection(this, parent); var cmd = string.Format(Capabilities.XList && !Capabilities.XGMExt1 ? ImapCommands.XList : ImapCommands.List, path, Behavior.FolderTreeBrowseMode == FolderTreeBrowseMode.Full || (parent != null && Behavior.LazyFolderBrowsingNotSupported) ? "*" : "%"); IList<string> data = new List<string>(); if (!SendAndReceive(cmd, ref data)) { return result; } for (var i = 0; i < data.Count - 1; i++) { var folder = Folder.Parse(data[i], ref parent, this); commonFolders.TryBind(ref folder); if (Behavior.ExamineFolders) { folder.Examine(); } if (folder.HasChildren && (isFirstLevel || Behavior.FolderTreeBrowseMode == FolderTreeBrowseMode.Full)) { folder.SubFolders = GetFolders(folder.Path + Behavior.FolderDelimeter, commonFolders, folder); } result.AddInternal(folder); } return result; }
public bool Logout() { IList<string> data = new List<string>(); if (SendAndReceive(ImapCommands.Logout, ref data)) { IsAuthenticated = false; Behavior.FolderDelimeter = '\0'; _folders = null; } return !IsAuthenticated; }