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

 <httpRuntime executionTimeout="3000" />

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

有帮助吗?

解决方案

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

这篇文章应该可以帮助您开始: C# 异步发送邮件.

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top