邮件队列发送功能中的异常

时间:2018-01-30 21:49:39

标签: php laravel email laravel-5

在我的应用中,我尝试使用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,所以任何帮助都会很棒。

2 个答案:

答案 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);
    });
}