【发布时间】:2014-11-01 00:34:15
【问题描述】:
我有一个关于在重定向之前使用 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 将避免)。
【问题讨论】:
-
在
simpleredirect之前放一个return
标签: php symfony swiftmailer bolt-cms