2011-12-14 32 views
5

我目前正在创建一个报价系统,其工作原理是这样:在PHP中创建电子邮件队列?

用户通过表单提交的数据 - >数据发送到数据库 - >生成的PDF - >电子邮件发送

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

令人遗憾的是,它的负面影响是,PHP脚本需要一分钟左右才能完全执行,因为脚本等待MX确认电子邮件已发送或失败。

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

此应用程序会很高兴地处理从用户进程请求建立的电子邮件队列,如果队列为空可能会关闭?

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

但是,由于我是一名初级PHP开发人员,所有其他开发人员都忙于照顾,我完全迷失了,甚至不知道从哪里开始,或者这是否是正确的策略?

的更多信息:

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

所有内部和外部邮件都是通过POSTINI,还增加了一个延迟以及路由。

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

回答

14

是的,这是相当直接的实施。而不是立即发送,将电子邮件数据保存到数据库。有一个脚本(通过cron运行每分钟,或更好的是一个daemonized PHP script),将排队的电子邮件发送出去。

请务必在数据库中标记进度,即“发送”列和“发送”列,以便您的脚本知道不要尝试重复发送正在发送的文件。

+1

...也许有一些标志为“软/硬反弹”,“延迟”,“没有域名MX”等。 – Piskvor 2011-12-14 16:20:36

0

运行一个本地MX,它只会从本地主机接入,并将中继到“真实”的MX。

+0

在PHP中构建和管理队列是可能的,但是重新发明轮子的气味。 – Piskvor 2011-12-14 16:14:13