Rose debug info
---------------

Баг при отправке email из SmtpClient

Так досадно, что баги в .NET 2.0 находятся, а их года не исправляют, в том числе и в сервиспаках

Я как-то давно писал о том, как отправлять емайл из ASP.NET, но в WinForms приложениях так сделать нельзя, а именно, нельзя подключить System.Web.Mail, кстати, непонятно по каким причинам!

Для WinForms приложений предлагается другой способ:

using System.Net.Mail;
using System.Net;

void SendMail()
{
MailMessage mail = new MailMessage();
mail.To.Add("[email protected]");
mail.From = new MailAddress("[email protected]";);
mail.Subject = "тема письма";
mail.Body = "текст письма";
SmtpClient smtp = new SmtpClient("smtp.email.ru");
smtp.Credentials = new NetworkCredential("login", "password");    //это логин и пароль для авторизации на SMTP сервере
smtp.Send(mail);
}

вобщем, код очень простой. НО! Он не работает с Kerio Mail Server.
керио ругается и выдает ошибку: {"Syntax error, command unrecognized. The server response was: 5.7.0 Authentication failed"}

Поиск в гугле привел на форумы MSDN, где как раз обсуждают эту проблему датированные аж 2005 годом!!!!!!!!

Суть, в том, что майкрософт, когда писала SmtpClient, отошла от RFC 2554 и некорректно общается с Smtp серверами. Непонятно почему другие почтовые сервера это едят за милую душу, похоже приспособились уже к индусам. А фирма Керио забила, мол "решайте сами"... А в майкрософт об этом как-то забыли

Сижу сейчас и думаю, сторонний компонент покупать, писать свой, или вместо своего kerio mail сервера пользоваться каким-нибудь mail.ru?

1 комментарий
.NET Developer 2010

Я бы написал собственный компонент. Это отнимит не так уж и сного времени, зато вы получите очень большой опыт в этом деле. Покупать сторонний компонент тоже можно, но это не та задача, ради которой стоит тратить деньги.