我正在laravel v5.4中处理队列作业。现在我想通过电子邮件稍后向用户发送电子邮件功能。以下是我正在使用的功能
public static function singleEmailQueueJob(){
for($i=1; $i<=2; $i++){
$time = $i * 10;
$data['email'] = 'abc@gmail.com';
$data['name'] = "Rizwan_$time";
$data['subject'] = 'Queue Job Testing->'.$i;
$data['verification_code'] = base64_encode($i.time());
\Mail::later($time,'emails.password', $data, function ($m) use ($data) {
$m->from(CommonHelper::$email_info['admin_email'],CommonHelper::$email_info['site_title']);
$m->to($data['email'],$data['name']);
$m->subject($data['email']);
});
}
echo "Email send successfully";
}
当我运行此功能时,我在异常
中收到以下错误{"success":"false","message":"Only mailables may be queued."}
在.eve文件中设置
QUEUE_DRIVER=database
和config / queue.php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
我不知道代码中的问题在哪里。请帮忙。
答案 0 :(得分:1)
我使用以下代码找到了问题
$date = Carbon::now()->addMinutes($time);
Queue::later($date, new EmailSending($data));
现在我可以在队列中发送电子邮件
了感谢帮助我
答案 1 :(得分:0)
在我的情况下,我创建了作业'SendVerificationEmail',并在成功注册此类用户后调用此作业。
dispatch(new SendVerificationEmail($user));
您是否也在代码中发送(your_job)???