我有一个关于在重定向之前使用 SwiftMailer 的问题。如果我允许发出请求的控制器返回,则可以正常发送电子邮件。例如:
function foo() {
// ...
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($sender)
->setTo($recipient)
->setBody(strip_tags($html))
->addPart($html, 'text/html');
$result = $this->app['mailer']->send($message);
return '';
}
只要我返回非空响应,上述内容就可以工作。
但是,如果我这样做但使用这样的重定向:
function foo() {
// ...
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($sender)
->setTo($recipient)
->setBody(strip_tags($html))
->addPart($html, 'text/html');
$result = $this->app['mailer']->send($message);
simpleredirect($this->app['paths']['root']);
}
然后不发送消息。
注意:simpleredirect()
函数终止脚本,这是标准做法。
在这两个示例中,$result
返回的都是指定收件人的数量。因此,我只能假设邮件已排队,并且某种调度在常规返回上运行,而在存在重定向的情况下会被错过。
我感觉可能会启用SwiftMailer选项。spool
但是,对我的 Bolt 项目进行了一些搜索,我似乎找不到它被设置在任何地方。如果启用了假脱机,那么直到内核终止阶段才会发送电子邮件,重定向(die
将避免)。