Вчера писал о неприятном баге с SmtpClient и Kerio Mail Server. Уже было отчался и думал писать свой компонент, чтобы корректно работать с smtp сервером от Kerio.
С другой стороны, я выкладывал способ отправлять email из ASP.NET, и очень он мне нравится, поскольку использует CDO. Я люблю CDO

Итак, первый способ – используя System.Net.Mail:
using System.Net.Mail;
using System.Net;
void SendMail()
{
MailMessage mail = new MailMessage();
mail.To.Add("my@mail.ru");
mail.From = new MailAddress("smbdys@mail.ru");
mail.Subject = "тема письма";
mail.Body = "текст письма";
SmtpClient smtp = new SmtpClient("smtp.mail.ru");
smtp.Credentials = new NetworkCredential("login", "password"); //это логин и пароль для авторизации на SMTP сервере
smtp.Send(mail);
}
Этот способ работает прекрасно, наверное, со всеми SMTP серверами (с mail.ru работает, например) кроме Kerio Mail Server 
Второй способ – используем System.Web.Mail
Но! Для WinForms, оказывается необходимо сделать несколько телодвижений, чтобы подключить System.Web.Mail, а именно:
Тыкнуть References -> Add Reference -> вкладка .NET -> выбрать в списке System.Web -> OK
Все! После этого можно прописать using System.Web.Mail;
using System.Web.Mail;
void SendMail()
{
System.Web.Mail.MailMessage m = new System.Web.Mail.MailMessage();
m.From = "my@server.ru";
m.To = "somebody@mail.ru";
m.BodyFormat = System.Web.Mail.MailFormat.Text;
m.BodyEncoding = System.Text.Encoding.GetEncoding("windows-1251");
m.Subject = "Тема пиьсма";
m.Body = "текст письма";
// для аутентификации на SMTP сервере
m.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1);
m.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "UserName");
m.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "Password");
System.Web.Mail.SmtpMail.SmtpServer = "smtp.server.ru";
System.Web.Mail.SmtpMail.Send(m);
}
Ура-ура, второй способ работает с Kerio Mail Server
Хотя, оба способа довольно просты и миновали те времена когда надо было реализовывать в своих компонентах протокол SMTP.
Меня зовут Адель Шигабутдинов, этот блог я использую для записок самому себе. 
.NET программист
/ 20.04.2009Интересно, а почему эти классы разные? Зачем вообще их держут две реализации, ведь можно было обойтись одной, которая будет работать как ASP.NET, так и в WinForms. Никто не запрещает отправлять почту SmtpMail из System.Web.Mail.