Баг при отправке 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?
Я бы написал собственный компонент. Это отнимит не так уж и сного времени, зато вы получите очень большой опыт в этом деле. Покупать сторонний компонент тоже можно, но это не та задача, ради которой стоит тратить деньги.