我试图使用数据库驱动程序排队电子邮件。使用Mail::send
电子邮件按预期发送。但是当我使用Mail::queue
时,传递给视图的用户对象会获得null
"尝试获取非对象的属性"。
我有一个邮件程序类,这些是负责发送电子邮件的方法:
public function sendAssignmentEmail(User $user)
{
$this->to=$user->email;
$this->view='emails.assigned';
$this->data=compact('user');
$this->subject='subject';
$this->deliver();
}
public function deliver()
{
$to=$this->to;
$subject=$this->subject;
$from=$this->from;
return $this->mailer->queue($this->view,$this->data, function($message)
use($to, $subject, $from)
{
$message->from($from, 'example.com');
$message->to($to);
$message->subject($subject);
});
}
我做错了什么? 我知道问题在于
$this->data
如果我传递一个数组,队列就可以工作,但是如果数据是一个对象的形式,它就不会。
答案 0 :(得分:1)
Mail::queue
基本上与Mail::send
完全相同,除非您将它们排队等待发送。
因此,它需要与Mail::send
相同的参数,其中第二个参数需要是一个数组,因此当你提供一个数组时它为什么工作,而当你提供一个对象时却没有。
只需将$this->data=compact('user');
更改为数组形式,它就可以正常使用。
当你遇到这样的事情时,docs非常有用:)。