实战需求
使用 Symfony Mailer 发送异步电子邮件
如果电子邮件在您的应用程序中很重要,那么异步处理它们是必不可少的。您不希望您的电子邮件留在记忆中。如果系统崩溃,它们就会消失!
Swiftmailer长期以来一直是发送电子邮件的流行选择。自从引入Symfony Mailer以来,这已经改变了。Swiftmailer 可以选择在发送之前将电子邮件保存到磁盘。这些文件还将包括附件。Swiftmailer 没有我们在这里解决的问题。
Symfony Mailer 使用Symfony Messenger。电子邮件应该通过异步消息传输发送。如果您向电子邮件添加附件,就会出现问题。如果您按路径附加文件(attachFromPath在Email课堂上使用),附件将不会与电子邮件本身位于同一位置。为了确保电子邮件将包含这些文件,您必须确保这些文件存在!
如果您直接附加文件(attach在Email课堂上使用),它将起作用!但是,这将导致您的消息队列包含带有二进制数据的完整消息。这是您可能想要避免的事情。根据运输方式的不同,可能会出现不同的问题,例如:
- 队列可能会变得太大并且会影响性能。
- 如果您附加大文件,消息可能会变得太大。
从上述问题得出结论:您希望将二进制数据保留在消息传输之外。