2011-02-23 32 views
0

我已经编写了一个联系人管理/通信系统,用于记录人员的详细信息并允许发送大量通信。通过ASP.NET网页发送大量电子邮件的最佳方法

然而有时,当电子邮件被发送以下异常引发:

System.Threading.ThreadAbortException: Thread was being aborted

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

我正在寻找的是那将让这一切在ASP.NET

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

回答

4

有没有可靠的方式来做从.net 大众电子邮件广播没有一些中介。

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

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

即使您正在浏览真正的邮件服务器,排队的原因是避免重载本地邮件服务器。

从.net发送邮件通常适用于这些情况,特别是当所有收件人都在贵公司内时。但是,只要您必须以可靠的方式将它们发送给公众,那么您就需要“长大”这么说。

+0

@ Chris -Lively我可以从你的个人资料中看到你在这方面有丰富的经验。自从ASP/VBScript时代以来,我采用另一个应用程序来发送电子邮件的方法,但使用此客户端来获取类似这样的设置会更棘手。但它似乎是唯一的解决方案。 – 2011-02-24 09:42:48

+0

@彼得布里杰:是的,我们有我们自己的群发电子邮件解决方案,并花费了大量的时间和精力来尝试做到这一点。在一天结束时,您需要有一个正确配置的(反向DNS等)本地邮件服务器来处理实际的电子邮件。部分是它在.net中的限制;然而,更大的问题是越过接收服务器的垃圾邮件阻塞,并通过普通的邮件服务器解决了一些问题。即使现在有这么多的“白名单”,你仍然可能最终在某个人的垃圾邮件箱没有理由。 – NotMe 2011-02-24 15:10:27

2

看看服务代理,然后从队列中取出一个单独的应用程序以启动电子邮件。

2

不要。如果ASP.net请求超过超时时间,IIS将它们关闭,则IIS可以终止请求。

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

相关问题