internal Message(ImapClient client, Folder folder) : this() { Flags = new MessageFlagCollection(client, this); Labels = new GMailMessageLabelCollection(client, this); _client = client; Folder = folder; }
internal Folder(string path, IEnumerable<string> flags, ref Folder parent, ImapClient client) { _path = path; _name = ImapUTF7.Decode(_path.Split(client.Behavior.FolderDelimeter).Last()); UpdateFlags(flags); _parent = parent; _client = client; GMailThreads = new GMailThreadCollection(); }
internal GMailMessageThread(ImapClient client, Folder folder, long threadId) { Id = threadId; Messages = new MessageCollection(client, folder); }
internal static Folder Parse(string commandResult, ref Folder parent, ImapClient client) { Match match = Expressions.FolderParseRex.Match(commandResult); if (match.Success && match.Groups.Count == 4) { string[] flags = match.Groups[1].Value.Split(' '); string path = match.Groups[3].Value; if (client.Behavior.FolderDelimeter == '\0') { client.Behavior.FolderDelimeter = string.IsNullOrEmpty(match.Groups[2].Value) ? '"' : match.Groups[2].Value.ToCharArray()[0]; } return new Folder(path, flags, ref parent, client); } return null; }
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; }
internal Message(long uId, ImapClient client, Folder folder) : this(client, folder) { UId = uId; }
public bool MoveTo(Folder folder, bool downloadCopy = false) { if (folder == null) { throw new ArgumentNullException("folder"); } return CopyTo(folder, downloadCopy) && Remove(); }
public bool CopyTo(Folder folder, bool downloadCopy = false) { if (folder == null) { throw new ArgumentNullException("folder"); } IList<string> data = new List<string>(); if (!_client.SendAndReceive(string.Format(ImapCommands.Copy, UId, folder.Path), ref data, this)) { return false; } var m = Expressions.CopyUIdRex.Match(data.FirstOrDefault() ?? ""); if (m.Success) { folder.Search("UID " + m.Groups[3].Value); } return true; }