我写了一个联系人管理/沟通系统,记录了人员的详细信息,并允许发送大量通信。
但是,有时在发送电子邮件时会引发以下异常:
System.Threading.ThreadAbortException: Thread was being aborted
通过ASP.NET发送大量电子邮件的最佳方式是什么?
我正在寻找的是一种在ASP.NET中保留所有内容的方法
我有一种感觉,我可能需要将电子邮件存储在数据库中,并有一个单独的.net控制台应用程序/ Windows服务将它们发送出去。但是由于额外的开发开销和我没有时间,这是我想要考虑的最后一个选项。
答案 0 :(得分:4)
没有可靠的方法可以在没有某些中间人的情况下从.net 进行群发电子邮件广播。
我的意思是电子邮件必须在您的数据库或其他持久存储中排队。然后,您需要另一个应用程序(控制台,服务,等等)负责监视队列并对广播请求采取行动。
其次,请勿直接从您的代码发送。而是将电子邮件发送到您控制下的本地邮件服务器,以便重新广播到实际的收件人。垃圾邮件检测机制的剪切数量(如灰色列表)意味着您将花费大量时间来处理发送邮件,获取灰名单拒绝,等待15分钟(或多长时间),然后再次发送以查看它经历了。
即使您通过真实的邮件服务器排队也是为了防止本地邮件服务器过载。
从.net发送邮件通常适用于那些一次性邮件,特别是当所有收件人都在您的公司内时。但是,任何时候你必须以任何可靠性将它们发送给公众,那么你需要“长大”,可以这么说。
答案 1 :(得分:2)
查看服务代理,然后从队列中拉出一个单独的应用程序以触发电子邮件。
答案 2 :(得分:2)
别。如果IIS超过超时,IIS关闭它们等,则可以终止ASP.net请求。
在这种情况下,当您想要发送电子邮件时,您希望生成可以执行此操作的外部进程,因为它可以运行很长时间。您可以编写一个小的可执行控制台应用程序,知道如何发送它们,并让您的网页根据需要运行它。