在PHP中创建电子邮件队列?

时间:2011-12-14 16:09:11

标签: php email mime

我目前正在创建一个像这样工作的报价系统:

  

用户通过表单提交数据 - >数据发送到db - > pdf generated - >已发送电子邮件

我正在使用htmlmimemail5库执行此操作,生成的电子邮件将发送到本地网络上单独服务器上的邮件交换。

可悲的是,这方面的负面影响是,脚本需要大约一分钟才能完全执行,因为脚本等待MX确认电子邮件已发送或已失败。

所以我希望可能有一个单独的PHP应用程序来处理所有的电子邮件处理,这意味着用户不必等待一分钟,而是可以跳转到下一页,他们可以查看信息等。

这个应用程序很乐意解决从用户进程请求构建的电子邮件队列,如果队列为空,可能会关闭吗?

我猜它需要某种电子邮件队列(比如打印队列)。

然而,因为我是一名初级PHP开发人员,并且所有其他开发人员都忙于照看孩子,我完全迷失了,甚至不知道从哪里开始,或者这是否是正确的策略?

更多信息:

  • 服务器是BSD监狱
  • Apache 2.2 / PHP5

所有内部和外部电子邮件都通过POSTINI路由,这也会增加延迟。

欢迎任何想法或建议! :)

2 个答案:

答案 0 :(得分:15)

是的,实施起来非常简单。而不是立即发送,将电子邮件数据保存到数据库。有一个脚本(通过cron每分钟运行一次,或者更好的是daemonized PHP script)来获取排队的电子邮件并发送出去。

请确保数据库中有标记以指示进度,即“发送”列和“已发送”列,因此您的脚本知道不会尝试重复发送已经发送的内容。< / p>

答案 1 :(得分:2)

运行仅从localhost接收的本地MX,并将转发到“真正的”MX。