Laravel - 排队的电子邮件不起作用
Laravel - Email queued doesn't work
我有一个发送多封电子邮件的应用程序,有时它 return 给我一个超时错误。所以我认为解决方案是在后台发送排队的电子邮件,但我在实施时遇到了问题。
例如在我的控制器中我有它并且可以工作:
$data = array(
'name' => $tecnic->name,
'email' => $tecnic->email,
'code' => $code
);
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('no-reply@domain.pt' , 'Title');
$message->to($data['email'], $data['name'])->subject('subject');
});
接下来我创建一个 Job SendStartPatEmail
并添加:
use Mail;
class SendStartPatEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $data;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Mailer $mailer)
{
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('no-reply@domain.pt' , 'Title');
$message->to($data['email'], $data['name'])->subject('Subject');
});
}
}
然后在控制器中删除 Mail::send 并添加:
SendStartPatEmail::dispatch($data);
当我 运行 这个作业是在作业 table 中创建的,但不发送电子邮件并且尝试列为 0 。
这不会return任何错误。
我做错了什么?
要运行作业table中的排队作业,您需要运行php artisan queue:work
.
我建议阅读有关主管的文档,以确保工作人员始终 运行 在您需要的项目中工作:
我有一个发送多封电子邮件的应用程序,有时它 return 给我一个超时错误。所以我认为解决方案是在后台发送排队的电子邮件,但我在实施时遇到了问题。
例如在我的控制器中我有它并且可以工作:
$data = array(
'name' => $tecnic->name,
'email' => $tecnic->email,
'code' => $code
);
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('no-reply@domain.pt' , 'Title');
$message->to($data['email'], $data['name'])->subject('subject');
});
接下来我创建一个 Job SendStartPatEmail
并添加:
use Mail;
class SendStartPatEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $data;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Mailer $mailer)
{
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('no-reply@domain.pt' , 'Title');
$message->to($data['email'], $data['name'])->subject('Subject');
});
}
}
然后在控制器中删除 Mail::send 并添加:
SendStartPatEmail::dispatch($data);
当我 运行 这个作业是在作业 table 中创建的,但不发送电子邮件并且尝试列为 0 。
这不会return任何错误。
我做错了什么?
要运行作业table中的排队作业,您需要运行php artisan queue:work
.
我建议阅读有关主管的文档,以确保工作人员始终 运行 在您需要的项目中工作: