php - 发送队列电子邮件时 Laravel 错误
问题描述
我在failed_jobs
数据库表中遇到以下错误:
ErrorException:未定义的属性:/home/sm/public_html/app/Mail/NewCustomer.php:45 中的 stdClass::$subscription
这是非常基本的。这意味着该属性$subscription
不存在,但是......问题是我没有$subscription
在类代码中的任何地方调用。
在控制器中,我分配值:
$to = ['email' => 'someemail@gmail.com', 'name' => 'Name test'];
$mail = new \stdClass;
$mail->to = $to;
$mail->subject = 'Subject test';
$mail->body = 'Body test';
\Mail::queue(new \App\Mail\NewCustomer($mail));
NewCustomer 类包含:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class NewCustomer extends Mailable
{
use Queueable, SerializesModels;
/**
* Holds the item content
*
* @var Array
*/
protected $item;
/**
* Create a new message instance.
*
* @param Array
*
* @return void
*/
public function __construct($item)
{
$this->item = $item;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->to($this->item->to['email'], $this->item->to['name'])
->subject($this->item->subject)
->view('mails/new_customer')
->with('item', $this->item);
return $this;
}
}
该视图mails/new_customer
也不包含任何与$subscription
.
这是一些缓存问题还是什么?我无法弄清楚变量$subscription
来自哪里。
如果我立即发送电子邮件而不是队列,则效果很好:
\Mail::send(new \App\Mail\NewCustomer($mail));
解决方案
解决了。
这确实是一个缓存问题。php artisan queue:restart
在终端或通过 laravel运行:
\Artisan::call('queue:restart');
推荐阅读
- jquery - 如何使用数据表显示选择框特定项目的数据
- javascript - 有没有更简洁的方法来编写这个 React 代码?
- swift - 导航栏在 iPhone XS Max swift 上关闭视图控制器上的视图
- angular - 我应该把我的 toastr 服务放在哪里?
- javascript - 从 monaco-editor 中删除只读编辑器工具提示(monaco-alert)
- angular - 如何在 Angular 或 React - Frontend 中监听 lambda 函数?
- azure - Microsoft Azure 容器注册表是否按比例分配每日成本?
- java - 转义属性文件java中的特殊字符
- php - 搜索过滤器在 Elastic Search PHP 中不起作用
- bash - aws ec2 run-instances:脚本作为纯文本被忽略