我正在尝试从 ASP.NET MVC 4 Web 应用程序向我们的客户发送 500 封电子邮件。我只是使用一个 foreach 循环,如下所示。大约 50 个周期后,我收到一个一般异常,表示邮件消息无法发送。我相信我正在处理限制我的 Web 应用程序的限制和MS Exchange 设置。如何简单地实现限制来绕过这些限制?
谢谢。
foreach (var toAddress in addresses)
{
var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
};
message.IsBodyHtml = isHtml;
try
{
using (var client = new SmtpClient())
{
client.Send(message);
}
}
catch (Exception ex)
{
Debug.WriteLine("Cannot send e-mail to " + message.To + Environment.NewLine +
"Subject: " + subject + Environment.NewLine +
"Body: " + body + Environment.NewLine +
"Exception: " + ex.Message);
}
}
最佳答案
我想看看Quartz.NET并使用服务发送电子邮件。至于排队,也许可以考虑简单的文件存储或数据库。
如果您使用诸如 Thread.Sleep 之类的内容,请记住,您将阻止服务器呈现最终输出(例如,如果这是通过表单提交触发的,则生成的 View 将不会出现)待所有电子邮件发送完毕后才会显示)。通过使用诸如quartz之类的库,您可以保持服务器响应请求,同时减轻电子邮件发送的负担。
此外,作为引用,还有另一篇关于在不拖拽用户体验的情况下执行昂贵操作的 SO 帖子。这个可以查到here ,(恕我直言)最相关的答案是 TheCodeKing .
关于c# - 使用 ASP.NET MVC 发送 500 封电子邮件 : throttling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549606/