在laravel v5.4中没有推入队列作业

时间:2017-10-11 11:04:49

标签: php laravel laravel-5

我正在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,
        ],

我不知道代码中的问题在哪里。请帮忙。

2 个答案:

答案 0 :(得分:1)

我使用以下代码找到了问题

$date = Carbon::now()->addMinutes($time);
Queue::later($date, new EmailSending($data));

现在我可以在队列中发送电子邮件

感谢帮助我

答案 1 :(得分:0)

在我的情况下,我创建了作业'SendVerificationEmail',并在成功注册此类用户后调用此作业。

dispatch(new SendVerificationEmail($user));

您是否也在代码中发送(your_job)???