像这样从另一个线程发送电子邮件可以吗
本文关键字:电子邮件 另一个 线程 像这样 | 更新日期: 2023-09-27 18:00:34
在网站中,有时发送电子邮件需要几秒钟的时间,所以我需要从另一个线程发送电子邮件,不要等到电子邮件发送。
我在stackoverflow上找到了这个答案,这样做可以吗,以防我每次请求只发送一封电子邮件?
或者还有其他标准方法可以做到这一点?
如果可能,您应该设置一个只侦听环回地址(127.0.0.1)的本地SMTP服务器,因为这正是邮件队列的用途。您可以将SMTP服务器配置为通过真实的出站邮件服务器进行中继,这样您就不会遇到SPF将邮件视为垃圾邮件的问题。
通过这种方式,您的应用程序可以快速对出站邮件进行排队,并以其愉快的方式运行,您可以合理地确保即使在负载过重、网络问题甚至崩溃的情况下,消息最终也会送达。
从请求处理程序内部产生新线程是潜在的危险:如果流量激增,您可能会发现自己创建了足够多的线程,这会使峰值变得更糟。
最好是通过beanstalkd或其他消息队列等工具将邮件发送交给另一个进程,或者使用系统提供的mail
命令(我的Linux系统的mail(1)
命令可以在.07秒内将电子邮件排入队列,足够中等邮件负载)。
衡量你期望的流量。如果它是一个只供几十个人使用的内部工具,那么生成新线程可能没问题。如果它暴露在大的坏世界中,我建议使用一种更健壮的排队机制,它对系统资源的影响较小。