【问题标题】:ASP.Net MVC background threads for email creation and sending用于电子邮件创建和发送的 ASP.Net MVC 后台线程
【发布时间】:2010-09-03 16:20:42
【问题描述】:

我正在查看 postmarkapp.com 以使用他们提供的 .net 库从我的 asp.net mvc 2 应用程序发送电子邮件:postmark-dotnet 库

在他们的documentation 中,他们提到发送带附件的电子邮件可能需要一些时间,最好在后台工作中执行此操作。对于我的应用程序,我可以向我的用户发送 10 到 500 封个性化电子邮件,其中一些带有附件。

  • 对于在 ASP.Net MVC 中发起创建和发送这些电子邮件的管理员用户,以非阻塞方式执行此后台处理的最佳方法是什么?

  • 如果他们点击“创建并发送电子邮件”给 500 个用户并在该过程完成之前关闭浏览器会发生什么?

感谢您的帮助! ASP.Net MVC 新手

【问题讨论】:

    标签: asp.net-mvc email asp.net-mvc-2


    【解决方案1】:

    您可以创建一个新线程并在该线程中发送邮件:

    [HttpPost]
    [Authorize(Roles = "Administrator")]
    public ActionResult SendMails()
    {
        new Thread(() => 
        {
            // Send the emails here
        }).Start();
        return View();
    }
    

    如果用户关闭浏览器,该线程将继续运行,直到完成或 AppDomain 关闭。该操作将立即返回一个视图,并且不会阻塞。

    另外,最好在数据库中设置一些标志,表明正在运行发送电子邮件的操作,这样如果管理员两次单击该按钮,您的用户就不会收到大量邮件。

    如果您想要更强大的解决方案,可以查看MSMQhere's a tutorial 应该可以帮助您快速入门。

    【讨论】:

    • 在控制器方法中发送电子邮件(开放线程)是一种不好的做法。它应该是一个静态类!
    • 为什么这是一种不好的做法?
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多