Symfony2 SwiftMailer - 如何在不等待服务器响应的情况下发送电子邮件

时间:2013-12-11 08:38:23

标签: php performance email symfony swiftmailer

我正在使用swiftmailer发送一封包含约300个BCC的电子邮件。 问题是,在执行此操作时,我在客户端获得了30秒的超时。

在服务器端检查时,邮件发送正确,但发送所有这些电子邮件需要一些时间,因为邮件服务器会处理大量电子邮件。

如何告诉swiftmailer不要等待服务器响应并呈现视图。

我检查了coockbook中的How to Spool Emails,但我不需要这样做。

任何想法我怎么能这样做?提前谢谢。

1 个答案:

答案 0 :(得分:4)

来自Symfony Docs:

# app/config/config.yml
swiftmailer:
    # ...
    spool: { type: memory }
  

当您使用SwiftmailerBundle发送电子邮件时   Symfony2应用程序,它将默认发送电子邮件   立即。但是,您可能希望避免性能损失   Swift Mailer和电子邮件传输之间的通信   可能会导致用户在电子邮件中等待下一页加载   正在发送。选择“假脱机”电子邮件可以避免这种情况   而不是直接发送它们。这意味着Swift Mailer可以   不要尝试发送电子邮件,而是将邮件保存到   某个地方,如文件。然后可以从线轴读取另一个过程   并负责发送线轴中的电子邮件。目前只   Swift Mailer支持假脱机到文件或内存。

http://symfony.com/doc/current/cookbook/email/spool.html