我正在看postmarkapp.com来处理我的asp.net mvc 2应用程序使用他们提供的.net库发送电子邮件:postmark-dotnet库
在他们的documentation他们提到发送电子邮件附件可能需要一些时间,更好地做一个后台工作.对于我的应用程序,我可以发送任何地方从10到500个个性化的电子邮件,一些附件批量给我的用户.
>在ASP.Net MVC中启动创建和发送这些电子邮件的管理员用户,以非阻塞方式进行后台处理的最佳方式是什么?
>如果他们点击“创建和发送电子邮件”到500个用户,并在该过程完成之前关闭浏览器会怎么样?
感谢任何帮助!新到ASP.Net MVC
解决方法
你可以产生一个新的线程并发送这个线程的邮件:
[HttpPost] [Authorize(Roles = "Administrator")] public ActionResult SendMails() { new Thread(() => { // Send the emails here }).Start(); return View(); }
如果用户关闭浏览器,该线程将继续运行,直到它完成或AppDomain关闭.该操作将立即返回一个视图,它不会被阻止.
此外,将数据库中的一些标志设置为发送电子邮件的操作正在运行可能是一个好主意,以便如果管理员在按钮上单击两次,那么您的用户不会被大量邮件敲定.
如果你想要更强大的解决方案,你可以看一下MSMQ. here’s a tutorial这应该让你很快开始.