如何保存 Swiftmailer 发送的所有电子邮件
How to save all e-mails sent by Swiftmailer
我正在构建 Symfony 2 网络应用程序。我的电子邮件是通过 Swiftmailer 发送的。
因为在我的网络应用程序的最新版本中,我在数据库中记录了邮件程序 class/function 发送的所有电子邮件以进行跟踪(查看系统是否正常工作并有一定的证据证明我的电子邮件至少发送),我想在这个版本中做同样的事情。那时,我正在使用 PHPMailer,我将其包装在一个函数中以包含 PDO 调用。
现在使用 Symfony 和 Swiftmailer,我想知道我如何能够轻松地将所有电子邮件记录在我的数据库中,当然还有 doctrine ORM。
我想最简单的方法是每次发送电子邮件时手动记录它,但我希望它自动完成,因为我将发送大量电子邮件。我还希望我的 class 之后像 Swiftmailer 一样灵活,所以将所有内容包装在 "simple function" 中不是一个替代方案。
我的第一个想法是扩展 Swiftmailer class 并添加一个内部调用继承的 send()
方法的自定义发送方法。问题是,我不知道把 class 放在哪里,而且我需要通过自定义服务连接或调用它,因为内置服务使用 Swiftmailer 本身,我不是吗?
除此之外,还有电子邮件可能被假脱机的问题,在这种情况下,如果电子邮件确实已发送,send()
不会给您反馈。还是我对工作方式有误解?
还有其他人有类似的 issue/request 吗?如果有,你是怎么解决的?
谢谢。
您可以在此处采用多种方法。第一种方法如您所说,将电子邮件保存到数据库并从数据库发送电子邮件,看看它是否以这种方式发送。 Automailer 捆绑包会为您做到这一点。
我不推荐这种方法,因为您需要维护 table 可以快速轻松扩展的数据。您可能还需要维护 MTA。
您可能更感兴趣的是最终用户是否收到了电子邮件。如果这就是您要查找的内容,我建议您使用交易邮件服务,例如 Mandrill or Sendgrid。我推荐这个的原因是。
- 您不需要操作 MTA
- 您无需担心在本地存储您的电子邮件。
- 他们有一个 API 可以让发送有吸引力的电子邮件变得非常简单
- 他们有 API 功能,可以轻松查看您发送的消息是否已收到。
好的,我现在找到了一个包,Swiftmailer-logger-bundle,它解决了我的问题。
https://github.com/tweedegolf/swiftmailer-logger-bundle
对于那些有类似问题的人:看看那个包。如果不能满足你的需求,至少会说明如何使用swiftmailer事件。
我正在构建 Symfony 2 网络应用程序。我的电子邮件是通过 Swiftmailer 发送的。 因为在我的网络应用程序的最新版本中,我在数据库中记录了邮件程序 class/function 发送的所有电子邮件以进行跟踪(查看系统是否正常工作并有一定的证据证明我的电子邮件至少发送),我想在这个版本中做同样的事情。那时,我正在使用 PHPMailer,我将其包装在一个函数中以包含 PDO 调用。 现在使用 Symfony 和 Swiftmailer,我想知道我如何能够轻松地将所有电子邮件记录在我的数据库中,当然还有 doctrine ORM。 我想最简单的方法是每次发送电子邮件时手动记录它,但我希望它自动完成,因为我将发送大量电子邮件。我还希望我的 class 之后像 Swiftmailer 一样灵活,所以将所有内容包装在 "simple function" 中不是一个替代方案。
我的第一个想法是扩展 Swiftmailer class 并添加一个内部调用继承的 send()
方法的自定义发送方法。问题是,我不知道把 class 放在哪里,而且我需要通过自定义服务连接或调用它,因为内置服务使用 Swiftmailer 本身,我不是吗?
除此之外,还有电子邮件可能被假脱机的问题,在这种情况下,如果电子邮件确实已发送,send()
不会给您反馈。还是我对工作方式有误解?
还有其他人有类似的 issue/request 吗?如果有,你是怎么解决的?
谢谢。
您可以在此处采用多种方法。第一种方法如您所说,将电子邮件保存到数据库并从数据库发送电子邮件,看看它是否以这种方式发送。 Automailer 捆绑包会为您做到这一点。
我不推荐这种方法,因为您需要维护 table 可以快速轻松扩展的数据。您可能还需要维护 MTA。
您可能更感兴趣的是最终用户是否收到了电子邮件。如果这就是您要查找的内容,我建议您使用交易邮件服务,例如 Mandrill or Sendgrid。我推荐这个的原因是。
- 您不需要操作 MTA
- 您无需担心在本地存储您的电子邮件。
- 他们有一个 API 可以让发送有吸引力的电子邮件变得非常简单
- 他们有 API 功能,可以轻松查看您发送的消息是否已收到。
好的,我现在找到了一个包,Swiftmailer-logger-bundle,它解决了我的问题。 https://github.com/tweedegolf/swiftmailer-logger-bundle
对于那些有类似问题的人:看看那个包。如果不能满足你的需求,至少会说明如何使用swiftmailer事件。