c# - 有时使用 SMTP 发送电子邮件失败 [现有连接被远程主机强行关闭。]
问题描述
当我尝试使用此配置发送电子邮件时,我遇到了特定电子邮件配置的问题我收到此错误
InnerException:无法从传输连接读取数据:现有连接被远程主机强制关闭。资源
我并不总是收到此错误,有时会发送电子邮件,有时会收到上述错误。
但是,如果我尝试使用此配置从本地主机发送电子邮件,它可以正常工作,但在生产(云服务器)中并不总是有效。
编码:
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):" );
}
};
解决方案
推荐阅读
- php - 如何不自动下载php中的文件
- c - c编程中的分段错误...通过或失败程序,最后通过和失败的学生列表
- image - 如何将数组向量转换为 4D 数组?
- laravel - 软删除是否适用于流明框架?流明的限制?
- java - Spring-Boot中的LOG配置
- node.js - 为什么“CORS Anywhere”突然返回错误:“缺少所需的请求标头。必须指定以下之一:origin,x-requested-with”
- oracle - 带有条件的 Oracle 唯一索引
- sqlite - 如果使用 sqliteOpenHelper 类,如何备份 Sqlite 数据库
- javascript - 从下拉列表中禁用最低值
- python - lambda 表达式列表的行为