System.Net.Mail.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("[email protected]", 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;
    }

И ошибка, которую я получаю, такова:

System.Net.Mail.SmtpException: служба недоступна, закрывается канал передачи. Ответ сервера был: 4.4.2 mailer.mailer.com Ошибка: превышено время ожидания в System.Net.Mail.MailCommand.CheckResponse (SmtpStatusCode statusCode, строковый ответ) в System.Net.Mail.MailCommand.Send (SmtpConnection conn, Byte [ ], строка из) в System.Net.Mail.SmtpTransport.SendMail (отправитель MailAddress, получатели MailAddressCollection, String deliveryNotify, SmtpFailedRecipientException и исключение) в System.Net.Mail.SmtpClient.Send (сообщение MailMessage)

может кто-нибудь, пожалуйста, помогите, эта ошибка меня убивает.

Заранее спасибо.


person rockin'    schedule 14.02.2012    source источник


Ответы (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();
person rockin'    schedule 15.02.2012
comment
MailMessage.Dispose () (.NET 3.5) - person garik; 06.06.2012
comment
У меня не получилось. Ну ... он избавился от исключения, но теперь он просто зависает при отправке одного или двух писем. - person Ian Warburton; 30.11.2012

Мне нравится заключать это в блок using. Это заставит распорядиться, и это очень элегантно.

using(SmtpClient objCompose = new SmtpClient("xxxx"))
{
    objCompose.Send(mailmessage); 
}
person markdotnet    schedule 15.02.2013
comment
Этот код отлично компилируется под VS 2013, .NET 4.5 - person nsimeonov; 03.11.2014