在 ASP.NET 中发送大量电子邮件的最佳方式是啥?

Posted

技术标签:

【中文标题】在 ASP.NET 中发送大量电子邮件的最佳方式是啥?【英文标题】:What is the best way to send large batches of emails in ASP.NET?在 ASP.NET 中发送大量电子邮件的最佳方式是什么? 【发布时间】:2010-09-08 14:09:40 【问题描述】:

我目前正在遍历数据读取器并调用 System.Net.Mail.SmtpClient 的 Send() 方法。这样做的问题是它很慢。每封电子邮件大约需要 5-10 秒发送(这可能只是我的主机的问题)。我必须像这样覆盖 web.config 文件中的 executionTimeout 默认值(默认为 90 秒):

 <httpRuntime executionTimeout="3000" />

一个警告:我在一个共享主机上,所以我认为我无法使用 PickupDirectoryFromIis 选项发送(至少,当我打开它时它给了我错误)。

【问题讨论】:

【参考方案1】:

您可以异步发送邮件。这样超时不会中断您的发送。

这篇文章应该可以帮助您入门:Sending Emails Asynchronously in C#。

这里还有另一种方法:http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx

当然有几个商业客户端可用,但我尝试过并且可以推荐的唯一一个是http://www.aspnetemail.com/

【讨论】:

【参考方案2】:

肯定会在后台工作进程中生成它,以便它们异步退出。

顺便说一句,每封电子邮件 5-10 秒对我来说似乎很慢。在我的服务器上,每封电子邮件只需要几分之一秒。

【讨论】:

以上是关于在 ASP.NET 中发送大量电子邮件的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 ASP.Net Core Web App 项目发送给某人的最佳实践?

在 ASP.NET 中流式传输文件的最佳方式

使用 asp.net 发送 20,000 多封电子邮件

如何在 ASP.NET Core 中发送邮件

.NET 发送电子邮件的最佳方法(System.Net.Mail 有问题)

使用 ASP.Net 在 HTML 中显示格式化文本(来自数据库)