public MailMessage(string from, string to, string subject, string body)
 {
     _from = new EmailAddress(from, from);
     _to = new EmailAddressCollection();
     _cc = new EmailAddressCollection();
     _to.Add(new EmailAddress(to, to));
     _subject = subject;
     _body = body;
 }
        public void SendMail(EmailAddress from, EmailAddressCollection to, EmailAddressCollection cc, string subject, string body)
        {
            Connect();
            Debug.Print(ReadLine());
            if (_requireAuth)
            {
                string str = WriteReadLine("EHLO test.domain.com");
                Debug.Print(str);
                while (str[3] == '-') Debug.Print(str = ReadLine());

                byte[] buf = new byte[2 + _user.Length + _password.Length];
                buf[0] = 0;
                byte[] userData = Encoding.UTF8.GetBytes(_user);
                Array.Copy(userData, 0, buf, 1, userData.Length);
                buf[1 + userData.Length] = 0;
                byte[] passData = Encoding.UTF8.GetBytes(_password);
                Array.Copy(passData, 0, buf, 2 + userData.Length, passData.Length);
                Debug.Print(WriteReadLine("AUTH PLAIN " + ConvertBase64.ToBase64String(buf)));
            }
            else
            {
                Debug.Print(WriteReadLine("HELO test.domain.com"));
            }
            Debug.Print(WriteReadLine("MAIL FROM: <" + from.Address + ">"));
            if (to != null)
            {
                foreach (EmailAddress toAddress in to)
                {
                    Debug.Print(WriteReadLine("RCPT TO: <" + toAddress.Address + ">"));
                }
            }
            if (cc != null)
            {
                foreach (EmailAddress ccAddress in cc)
                {
                    Debug.Print(WriteReadLine("RCPT TO: <" + ccAddress.Address + ">"));
                }
            }
            Debug.Print(WriteReadLine("DATA\r\n"));

            #region send data
            WriteLine("From: \"" + from.Name + "\" <" + from.Address + ">");
            if (to != null)
            {
                foreach (EmailAddress toAddress in to)
                {
                    WriteLine("To: \"" + toAddress.Name + "\" <" + toAddress.Address + ">");
                }
            }
            if (cc != null)
            {
                foreach (EmailAddress ccAddress in cc)
                {
                    WriteLine("Cc: \"" + ccAddress.Name + "\" <" + ccAddress.Address + ">");
                }
            }
            WriteLine("Subject: " + subject + "\r\n");
            WriteLine(body);
            Debug.Print(WriteReadLine("."));
            #endregion

            Debug.Print(WriteReadLine("QUIT"));
            Disconnect();
        }
 public void Remove(EmailAddress address)
 {
     _emailCollection.Remove(address);
 }
 public void Add(EmailAddress address)
 {
     _emailCollection.Add(address);
 }