Система.Сеть.Почта.SmtpException: служба недоступна, закрытие канала передачи. Ответ сервера: 4.4.2
Я получаю эту ошибку, когда я часто отправляю сообщения по электронной почте список пользователей. Скажем, он отправляет 10 писем, а 1 дает ошибку, затем отправляет еще пару писем и дает ту же ошибку.
код выглядит так:
public static bool SendEmail(string toMail, string fromname, string from, string subject, string body, string BCC)
{
MailMessage mailmessage = new MailMessage("frommail@mail.com", toMail, subject, body);
mailmessage.IsBodyHtml = true;
mailmessage.BodyEncoding = Encoding.GetEncoding(1254);
mailmessage.SubjectEncoding = Encoding.GetEncoding(1254);
SmtpClient objCompose = new SmtpClient("xxxx");
try
{
objCompose.Send(mailmessage);
return true;
}
catch (Exception ex) {
}
return false;
}
и ошибки я получаю это:
Система.Сеть.Почта.SmtpException: служба недоступна, закрытие канала передачи. Ответ сервера: 4.4.2 mailer.mailer.com ошибка: превышен тайм-аут на Системы.Чистая.Почте.Если создать.CheckResponse(SmtpStatusCode состояния, строку ответа ) в системе.Сеть.Почта.MailCommand.Отправить (SmtpConnection conn, Byte [] команда, строка из) в системе.Сеть.Почта.SmtpTransport.SendMail (отправитель MailAddress, получатели MailAddressCollection, строка deliveryNotify, SmtpFailedRecipientException & исключение) в системе.Сеть.Почта.SmtpClient.Отправить (сообщение MailMessage)
может кто-нибудь, пожалуйста, помогите, эта ошибка убивает меня.
спасибо заранее.
2 ответов
удаление smtpclient (objCompose) сделало трюк.
// Summary:
// Sends a QUIT message to the SMTP server, gracefully ends the TCP connection,
// and releases all resources used by the current instance of the System.Net.Mail.SmtpClient
// class.
public void Dispose();
Мне нравится обертывать его в блок using. Это заставит распоряжаться и это очень элегантно.
using(SmtpClient objCompose = new SmtpClient("xxxx"))
{
objCompose.Send(mailmessage);
}