У меня проблема с определенной конфигурацией электронной почты, когда я пытаюсь использовать эту конфигурацию для отправки электронной почты. Я получил эту ошибку
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):" );
}
};