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']);
});
关闭被传递给Mail::queue
的问题。怎么了?这与in the docs的内容完全相同。
答案 0 :(得分:1)
好吧,我假设 $attributes
是您尝试传递给电子邮件视图welcome
的内容。如果是,所以你需要把它放在一个数组中。在那种情况下,应该是喜欢的东西:
Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attributes)
{
$message
->to($attributes['email'])
->subject($attributes['title']);
});
......这可能对你有用! :d
答案 1 :(得分:1)
我遇到了同样的错误消息。我的问题是我的$属性是一个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)
答案 2 :(得分:0)
我知道这篇文章很老但我最近也遇到了这个错误。原因是将$ request实例放入邮件队列回调中。
Mail::queue('emails.welcome',$data,function(){
$email = $request->input('email'); // <- apparently this will cause a closure error
});
我还从搜索中了解到,您无法将不可序列化的数据放入闭包中。这包括雄辩的模型或对象。
答案 3 :(得分:-1)
问题是在闭包内使用$ this。查看文件SerializableClosures.php和函数serialize()。 $ this-&gt; to和$ this-&gt; subject是对Class上的字段的引用而不是Closure中的字段,因此要修复必须使它们成为局部变量并将它们传递给闭包的代码。