public static SmtpServerCapability ParseCapability(SmtpResponseReader reader)
        {
            var capability = new SmtpServerCapability();
            while (true) {
                if (!reader.IsKnownCapability) {
                    if (reader.IsLast) {
                        break;
                    }
                    reader.ReadNextLine();
                    continue;
                }

                if (reader.Text.StartsWith("AUTH")) {
                    var sub = reader.Text.Substring(5);
                    var split = sub.Split(' ');
                    foreach (var auth in split.Select(item => string.Format("AUTH={0}", item))) {
                        if (!capability.Items.Contains(auth)) {
                            capability.Store(auth);
                        }
                    }
                } else {
                    if (!capability.Items.Contains(reader.Text)) {
                        capability.Store(reader.Text);
                    }
                }

                if (reader.IsLast) {
                    break;
                }

                reader.ReadNextLine();
            }
            return capability;
        }
        public static SmtpServerCapability ParseCapability(SmtpResponseReader reader)
        {
            var capability = new SmtpServerCapability();

            while (true)
            {
                if (!reader.IsKnownCapability)
                {
                    if (reader.IsLast)
                    {
                        break;
                    }
                    reader.ReadNextLine();
                    continue;
                }

                if (reader.Text.StartsWith("AUTH"))
                {
                    var sub   = reader.Text.Substring(5);
                    var split = sub.Split(' ');
                    foreach (var auth in split.Select(item => string.Format("AUTH={0}", item)))
                    {
                        if (!capability.Items.Contains(auth))
                        {
                            capability.Store(auth);
                        }
                    }
                }
                else
                {
                    if (!capability.Items.Contains(reader.Text))
                    {
                        capability.Store(reader.Text);
                    }
                }

                if (reader.IsLast)
                {
                    break;
                }

                reader.ReadNextLine();
            }
            return(capability);
        }