为什么 SmtpClient 发送邮件在 Asp.Net 应用程序中失败并出现异常?
Why is SmtpClient Send mail failing with exceptions in Asp.Net application?
我正在尝试通过 SmtpClient(“smtp.office365.com”)发送电子邮件,但 运行 遇到了问题。
考虑以下代码片段:
var fromAddress = new MailAddress("someone@example.com", "TestFrom");
var toAddress = new MailAddress("someoneto@example.com", "TestSend");
string fromPassword = "SomePassword";
var smtp = new SmtpClient
{
Host = "smtp.office365.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = "Hey There Did this Test Work?",
Body = "Hey There Did this Test Work?",
IsBodyHtml = true,
})
smtp.Send(message);
此代码可在 .Net 控制台应用程序中正常运行。
我还可以使用相同的凭据并通过 PowerShell 发送电子邮件。
当我尝试在 Asp.Net 应用程序中使用相同的代码片段时,它失败了。
我已经在本地部署到 Azure 的应用程序上进行了尝试。
我得到了相同的结果。
我得到以下异常:
Failure sending mail. Unable to read data from the transport
connection: net_io_connectionclosed.
我听说在过去 3 个月之前的某个时候它曾经正常工作。
我在这里做错了什么吗?我应该使用其他配置设置吗? Asp.Net 是否需要(在本地和 Azure 中)设置一些东西才能让它工作?
感谢
我们在发送电子邮件时遇到了类似的问题,结果证明这是因为我们没有强制执行 TLS 1.2。您可以使用以下代码强制执行它:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
您只需要在您的应用程序中调用一次,因此 Application_Start 中的回调 global.asax 是放置它的一个可能位置。
我正在尝试通过 SmtpClient(“smtp.office365.com”)发送电子邮件,但 运行 遇到了问题。
考虑以下代码片段:
var fromAddress = new MailAddress("someone@example.com", "TestFrom");
var toAddress = new MailAddress("someoneto@example.com", "TestSend");
string fromPassword = "SomePassword";
var smtp = new SmtpClient
{
Host = "smtp.office365.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = "Hey There Did this Test Work?",
Body = "Hey There Did this Test Work?",
IsBodyHtml = true,
})
smtp.Send(message);
此代码可在 .Net 控制台应用程序中正常运行。 我还可以使用相同的凭据并通过 PowerShell 发送电子邮件。
当我尝试在 Asp.Net 应用程序中使用相同的代码片段时,它失败了。 我已经在本地部署到 Azure 的应用程序上进行了尝试。 我得到了相同的结果。
我得到以下异常:
Failure sending mail. Unable to read data from the transport connection: net_io_connectionclosed.
我听说在过去 3 个月之前的某个时候它曾经正常工作。 我在这里做错了什么吗?我应该使用其他配置设置吗? Asp.Net 是否需要(在本地和 Azure 中)设置一些东西才能让它工作?
感谢
我们在发送电子邮件时遇到了类似的问题,结果证明这是因为我们没有强制执行 TLS 1.2。您可以使用以下代码强制执行它:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
您只需要在您的应用程序中调用一次,因此 Application_Start 中的回调 global.asax 是放置它的一个可能位置。