我有一个 asp.net 程序,我需要发送很多电子邮件。当我调用http://localhost:70/sendemails 时 ,系统将在单独的线程中一一发送电子邮件(就像异步一样)。我不知道这是否是最好的方法。但我想知道的是:我计划发送10000封电子邮件,在我调用链接后,然后关闭浏览器(意味着会话也将关闭),那么我创建的线程是否也会被终止?
发送大量电子邮件的最佳方法是什么?
我有一个 asp.net 程序,我需要发送很多电子邮件。当我调用http://localhost:70/sendemails 时 ,系统将在单独的线程中一一发送电子邮件(就像异步一样)。我不知道这是否是最好的方法。但我想知道的是:我计划发送10000封电子邮件,在我调用链接后,然后关闭浏览器(意味着会话也将关闭),那么我创建的线程是否也会被终止?
发送大量电子邮件的最佳方法是什么?
我建议 ASP.NET 应用程序将信息写入某种描述的队列中 - 无论是消息队列还是数据库中的表。
然后运行一个单独的服务来处理队列并发送电子邮件。这样,您无需等到电子邮件发送完毕后才回复,但您仍然可以确保在页面回复时,请求已被保留。
另一种选择是启动一个新线程来在 ASP.NET 应用程序中发送电子邮件,但这意味着如果应用程序崩溃(或被回收),请求将丢失。将持久性和容错放在单独的服务 IMO 中更容易。
关闭浏览器不应终止线程。可以终止线程的是应用程序的回收(如果内存增长太多,或者出现其他特定情况)。
邮件发送的最佳方法是拥有一个单独的 Windows 服务,但如果这不可能,那么使用线程可能是一个可行的想法,前提是您有一种机制可以在应用程序回收时重新启动线程并从哪里重新启动发送它被留下了。重新启动的问题是您需要向页面发出请求才能恢复线程 - 例如,您可以从您控制的计算机使用计划任务执行此操作。可以工作,但与 Windows 服务相比不是很可靠。