示例#1
0
        internal static ImapMailboxInfo Parse(ImapResponseLine line)
        {
            const string pattern = "\\(.*?\\)|\".+?\"|\\w+";
            var          parts   = Regex.Matches(line.Text, pattern)
                                   .OfType <Match>()
                                   .Select(x => x.Value)
                                   .ToArray();

            var name = ImapMailbox.DecodeName(parts[3].TrimQuotes());
            var info = new ImapMailboxInfo(name, parts[2].TrimQuotes().ToCharArray().First())
            {
                Flags = Regex.Match(parts[1], @"\(.*\)").Value.Trim(new[] { '(', ')' }).Split(' ')
            };

            return(info);
        }
示例#2
0
        private async Task <List <ImapMailboxInfo> > ReadListResponseAsync(string id)
        {
            var mailboxes = new List <ImapMailboxInfo>();

            while (true)
            {
                var line = await _connection.ReadAsync();

                if (line.IsUntagged)
                {
                    mailboxes.Add(ImapMailboxInfo.Parse(line));
                }

                if (line.TerminatesCommand(id))
                {
                    break;
                }
            }
            return(mailboxes);
        }