Swiftmailer不发送电子邮件(仅存储在假脱机中)

时间:2014-01-23 09:46:05

标签: php email symfony swiftmailer spool

我有一个使用Symfony 2.4创建的Web应用程序,我使用SwiftMailer发送电子邮件。

我使用邮件传输sendmail。

当用户发送电子邮件时,我不会收到此电子邮件。但是,如果我在命令行中执行:

$php app/console swiftmailer:spool:send --env=prod

我收到所有电子邮件。

¿我该怎么办?

非常感谢!

---- ----编辑

我已删除配置文件中对spool的所有引用,但问题仍然存在。

----编辑2 ----

Config.yml

mailer_transport: sendmail
mailer_host: ****
mailer_user: *****
mailer_password: ****

1 个答案:

答案 0 :(得分:2)

从你的配置中删除假脱机行(参数。我相信吗?我从未使用过symfony所以我正在解释文档)。

从配置中删除任何提及的假脱机后,它应该停止假脱机并立即发送。

话虽如此,假脱机的原因是它在执行请求结束时发送电子邮件,这样你就不会有性能损失(减慢请求),可能是通过关机功能。 。这个函数不能执行的唯一原因,因此你的电子邮件没有发送,如果脚本提前结束(即死/退出或未捕获的异常),那么你可能想看看解决根本原因而不是修补它

编辑:手动刷新(在命令行脚本示例中为此提供资金,我已将其编辑为我认为应该让它适合您的工作....)

// now manually flush the queue
$container = $this->getContainer();
$mailer = $this->get('mailer');
$spool = $mailer->getTransport()->getSpool();
$transport = $container->get('swiftmailer.transport.real');

$spool->flushQueue($transport);

http://symfony.com/doc/current/cookbook/console/sending_emails.html