在我的应用中,我尝试使用Mail::queue()
发送电子邮件。
我得到一个例外,说闭包的序列化失败了。
SerializableClosure.php第93行中的ErrorException:序列化 关闭失败:关闭'关闭'不允许
我有一个这个作为发送功能:
public function send()
{
$view = view('emails.welcome');
$data = [
'user' => Auth::user()
];
return $this->mailer->queue($view, $data, function($message){
$message->to($this->to)->subject($this->subject);
});
}
我最近才开始使用Laravel,所以任何帮助都会很棒。
答案 0 :(得分:0)
您在Closure中尝试使用$this
的问题。
请使用use
关键字提供参数$ to和$ subject,如下例所示:
return $this->mailer->queue($view, $data, function($message) use ($to, $subject) {
$message->to($to)->subject($subject);
});
答案 1 :(得分:0)
问题是在闭包内使用 $ this 。
$this->to
和$this->subject
是对Class上字段的引用而不是Closure中的字段,因此修复代码使它们成为局部变量并将它们传递给闭包,如下所示:
public function send()
{
$to = $this->getTo();
$subject = $this->getSubject();
return $this->mailer->queue( $this->getView(), $this->getData(), $this->getData(),
function($message) use($to, $subject) {
$message->to($to)->subject($subject);
});
}