0

我编写了一个联系人管理/通信系统,可以记录人员的详细信息并允许发送大量通信。

但是,有时在发送电子邮件时会引发以下异常:

System.Threading.ThreadAbortException: Thread was being aborted

通过 ASP.NET 发送大量电子邮件的最佳方式是什么?

我正在寻找一种将其全部保存在 ASP.NET 中的方法

我有一种感觉,我可能需要将电子邮件存储在数据库中,并有一个单独的 .net 控制台应用程序/Windows 服务将它们发送出去。然而,由于额外的开发开销和我没有时间,这是我想考虑的最后一个选项。

4

3 回答 3

4

在没有中介的情况下,没有可靠的方法可以从 .net 进行大量电子邮件广播。

我的意思是,电子邮件必须在您的数据库或其他持久存储中排队。然后,您需要另一个应用程序(控制台、服务等)来负责监控队列并处理广播请求。

其次,不要直接从您的代码中发送它们。相反,将电子邮件发送到您控制下的本地邮件服务器,以便重新广播给实际收件人。垃圾邮件检测机制(如灰名单)的数量过多意味着您将花费大量时间来处理发送消息、获得灰名单拒绝、等待 15 分钟(或多长时间),然后再次发送以查看它通过。

即使您通过真正的邮件服务器进行排队的原因也是为了避免本地邮件服务器超载。

从 .net 发送邮件通常适合一次性使用,尤其是当所有收件人都在您的公司内时。但是,无论何时您必须以任何可靠性将它们发送给公众,那么您需要“长大”可以这么说。

于 2011-02-23T15:54:02.773 回答
2

查看服务代理,然后从队列中拉出一个单独的应用程序来触发电子邮件。

于 2011-02-23T15:31:16.620 回答
2

不。ASP.net 请求可以在超过超时时被 IIS 终止,IIS 将它们关闭等。

在这种情况下,当您想要发送电子邮件时,您希望生成一个可以执行此操作的外部进程,因为它可以运行多长时间。您可以编写一个小的可执行控制台应用程序,该应用程序知道如何发送它们,并让您的网页根据需要运行它。

于 2011-02-23T15:45:48.160 回答