Отправка электронной почты с использованием SMTP иногда не удалась [Существующее соединение было принудительно закрыто удаленным хостом.] - PullRequest
0 голосов
/ 20 июня 2019

У меня проблема с определенной конфигурацией электронной почты, когда я пытаюсь использовать эту конфигурацию для отправки электронной почты. Я получил эту ошибку

InnerException: Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрытоудаленный узел.source

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

Но если я пытаюсь использовать эту конфигурацию для отправки электронной почты с моего локального хоста, этоработает без проблем, но на производстве (облачный сервер) не всегда работает.

код:

SmtpClient smtpClient = new SmtpClient()
{
    Host = settings.SMTPServerIP,
    Port = settings.SMTPPort.Value,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(settings.SMTPLoginUserName, settings.SMTPLoginPassword),
    EnableSsl = settings.EnableSSL.HasValue ? settings.EnableSSL.Value : false
};

smtpClient.Timeout = 300000;
mail = new MailMessage { From = new MailAddress(settings.SMTPLoginUserID, settings.SMTPLoginUserID)
, Subject = "test", Body = "test", IsBodyHtml = true };
mail.To.Add(em);
mail.Headers.Add("Message-Id", "<" + MessageId + ">");
smtpClient.SendAsync(mail,null);
smtpClient.SendCompleted += delegate(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    if (e.Error != null)
    {
        success = false;
    }
    if (e.Error != null)
    {
        insertExceptionLogToCCemails(pClientId, "Email status (error)(async):" + (e.Error == null ? "" : (e.Error.Message)) + " stack:" + (e.Error.StackTrace == null ? "" : e.Error.StackTrace) + " InnerException " + (e.Error.InnerException == null ? "" : e.Error.InnerException.Message) + " source:" + (e.Error.Source == null ? "" : e.Error.Source) + " HResult " + (e.Error.HResult == null ? "" : e.Error.HResult.ToString()) + " TargetSite " + (e.Error.TargetSite == null ? "" : e.Error.TargetSite.ToString()) + " HelpLink " + (e.Error.HelpLink == null ? "" : e.Error.HelpLink.ToString()));
    }
    else
    {
        insertExceptionLogToCCemails(pClientId, "Email status (error)(async):" );
    }
};
...