使用php和swift mailer实现不依赖于邮件队列的邮件服务器

使用php和swift mailer实现不依赖于邮件队列的邮件服务器,php,linux,swiftmailer,Php,Linux,Swiftmailer,我的web应用程序是在Linux服务器上用php完成的,我们使用swift mailer库将web应用程序中的电子邮件发送到我们自己的邮件服务器 问题是,我需要跟踪web服务器进程中发送或未发送的每封电子邮件,以便在邮件服务器停机的情况下,我们可以在邮件服务器再次启动时重新发送尚未发送的电子邮件。我们的商业模式依赖于向客户发送电子邮件 简言之,我们需要存储由于任何原因未发送的所有电子邮件,通常是因为邮件服务器已关闭 我想这可以通过检查SwiftMailer::send中的$failures参数(

我的web应用程序是在Linux服务器上用php完成的,我们使用swift mailer库将web应用程序中的电子邮件发送到我们自己的邮件服务器

问题是,我需要跟踪web服务器进程中发送或未发送的每封电子邮件,以便在邮件服务器停机的情况下,我们可以在邮件服务器再次启动时重新发送尚未发送的电子邮件。我们的商业模式依赖于向客户发送电子邮件

简言之,我们需要存储由于任何原因未发送的所有电子邮件,通常是因为邮件服务器已关闭

我想这可以通过检查SwiftMailer::send中的$failures参数(如果电子邮件尚未发送)来完成,并将其存储在数据库表mail\u failures或目录mail/failures/中的文件中

我的建议是:

在发送队列中插入任何邮件 发送邮件时从队列中删除邮件,如果未发送,则将其状态更改为失败 使用cronjob调用处理从队列发送邮件的php脚本 报告队列中是否有任何状态为失败的电子邮件* 我宁愿使用数据库表而不是系统文件

这是正确的做法吗?有什么改进的想法或方法吗?有自动处理的软件吗


是否可以通过ZeroMQ进行处理?

通过我阅读有关此问题的相关文章的方式,您可以将邮件服务器设置为高可用性邮件服务器,而不是在Web服务器中解决邮件服务器故障。这是一个选项吗?我想这是通过设置两个邮件服务器来实现的,但不知道如何使它们协同工作。它不会占用太多的服务器资源吗?邮件服务器是物理服务器上的一个虚拟机,它承载着更多的虚拟机web服务器、mysql服务器、git Repository您能告诉我更多信息或者从哪里开始吗?资源呢?当99%的时间我们只使用一台邮件服务器时,拥有两台邮件服务器是一项不错的投资吗?谢谢