Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法

Posted

技术标签:

【中文标题】Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法【英文标题】:Laravel Mail::queue error: Serialization of closure failed, even with the most basic usage 【发布时间】:2016-10-19 22:54:48 【问题描述】:

我遇到了Mail::queue() 的问题,不知道除了写我自己的Job 来处理排队问题之外还能做些什么来解决它。正如您在下面的屏幕截图中看到的那样,我有一个极小的示例,我正在尝试在artisan tinker 中运行。有人遇到过这个问题并解决了吗?

如果我改用Mail::send(),这完全可以;

【问题讨论】:

你使用 SuperClosure 吗? 您可以在 php 错误中看到正在使用 SuperClosure,但这不是重点。关键是上面的代码在 Tinker 中不起作用,在实际应用程序中也不起作用。我正在尝试判断这是否是我的某个配置选项,或者这是其他人在默认安装 Laravel 5.2 时遇到的问题。 Laravel 需要,在 laravel/framework/composer.json 中。 你能发布你的 activate.blade.php 文件吗? Activate.blade.php 的内容是“测试”。 【参考方案1】:

闭包是不可序列化的。您不能将它们推送到队列中。

Psy Shell v0.8.3 (PHP 7.1.0 — cli) by Justin Hileman
>>> serialize(function());
Exception with message 'Serialization of 'Closure' is not allowed'

【讨论】:

这是一篇较早的帖子,您的回答不适用。在 Laravel 5.2 中,上述代码仍在 5.2 文档中,但它不起作用。 Mail::queue('emails.welcome', $data, function ($message) // ); 取自文档页面。无论哪种方式,现在大部分都关闭了,因为它有几个旧版本并且整个队列系统已经改变。

以上是关于Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 无法为序列化准备路由 [api/user]。使用闭包

使用 Mandrill 和 Laravel 发送预定的电子邮件

Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的

Laravel 7:无法为序列化准备路由 [api/user]。使用闭包。 (逻辑异常)[重复]

Laravel 4 & Mandrill JSON 响应

使用带有 laravel 的 Mandrill API 的“异步”参数