コード例 #1
0
 internal CommonFolderCollection GetFolders()
 {
     var folders = new CommonFolderCollection(this);
     folders.AddRangeInternal(GetFolders("", folders, null, true));
     return folders;
 }
コード例 #2
0
        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;
        }
コード例 #3
0
        public bool Logout()
        {
            IList<string> data = new List<string>();

            if (SendAndReceive(ImapCommands.Logout, ref data))
            {
                IsAuthenticated = false;
                Behavior.FolderDelimeter = '\0';
                _folders = null;
            }

            return !IsAuthenticated;
        }