【问题标题】:Best approach to send mass e-mails through an ASP.NET webpage通过 ASP.NET 网页发送大量电子邮件的最佳方法
【发布时间】:2011-07-02 20:26:47
【问题描述】:

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

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

System.Threading.ThreadAbortException: Thread was being aborted

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

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

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

【问题讨论】:

    标签: .net asp.net email massmail threadabortexception


    【解决方案1】:

    没有可靠的方法从 .net 进行大量电子邮件广播没有一些中介。

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

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

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

    从 .net 发送邮件对于那些一次性来说通常很好,尤其是当所有收件人都在您的公司内时。但是,只要您必须以任何可靠性将它们发送给公众,那么您就需要“长大”。

    【讨论】:

    • @Chris-Lively 我可以从您的个人资料中看到您在该领域拥有丰富的经验。从 ASP/VBScript 时代开始,我就采用了使用另一个应用程序发送电子邮件的方法,但是对于这个客户端,获得类似这样的设置会比较棘手。然而,这似乎是唯一的解决方案。
    • @Peter Bridger:是的,我们有自己的群发电子邮件解决方案,并花费了大量的时间和精力来尝试做到这一点。归根结底,您需要有一个正确配置(反向 dns 等)的本地邮件服务器来处理实际的电子邮件。部分原因是 .net 的限制;但是,更大的问题是通过接收服务器的垃圾邮件块并通过普通邮件服务器解决其中的一些问题。即使现在有如此多的“白名单”,您仍然可能无缘无故地进入某人的垃圾邮件箱。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-05-21
        • 1970-01-01
        • 2013-01-16
        • 2012-09-20
        • 2010-09-08
        • 2012-11-17
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        相关资源
        最近更新 更多