5
Log::info('Sending email', array(
    'title' => $attributes['title'],
    'recipient' => $attributes['email']
));

Mail::queue('emails.welcome', $attributes, function($message) use ($attributes)
{
    $message
        ->to($attributes['email'])
        ->subject($attributes['title']);
});

The problem's with the closure being passed to Mail::queue. What's wrong? This is exactly the same with what's in the docs.

4

4 回答 4

1

我遇到了同样的错误信息。我的问题是我的 $attributes 是一个 Eloquent 模型,我猜它是不可序列化的。我不得不改变:

Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attributes)

$attrArray = $attributes->toArray(); Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attrArray)

于 2014-04-10T07:30:24.760 回答
1

好吧,我假设$attributes是您试图传递给电子邮件视图的东西welcome。如果是,那么您需要将其放入数组中。在这种情况下,应该是这样的:

Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attributes)
{
    $message
        ->to($attributes['email'])
        ->subject($attributes['title']);
});

...这可能对你有用!:D

于 2013-10-29T17:23:58.323 回答
0

我知道这篇文章很旧,但我最近也遇到了这个错误。原因是在邮件队列回调中放置了一个 $request 实例。

Mail::queue('emails.welcome',$data,function(){

$email = $request->input('email'); // <- apparently this will cause a closure error


});

我还从搜索中了解到,您不能将不可序列化的数据放入闭包中。这包括雄辩的模型或对象。

于 2015-04-30T14:08:09.157 回答
-1

问题是在闭包内使用 $this 。查看文件 SerializableClosures.php 和函数 serialize()。$this->to 和 $this->subject 是对类中字段的引用,而不是在闭包中的字段,因此要修复代码,您必须将它们设为局部变量并将它们传递给闭包。

于 2017-05-05T06:21:14.673 回答