2017-10-11 111 views
0

我正在laravel v5.4队列作业。现在我想通过电子邮件后发功能发送电子邮件给用户。下面是我的功能,我使用队列作业不推入laravel v5.4

public static function singleEmailQueueJob(){ 
     for($i=1; $i<=2; $i++){ 
      $time = $i * 10; 
      $data['email'] = '[email protected]'; 
      $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"; 
    } 

当我运行这个功能我收到以下的.eve文件我设置错误异常

{"success":"false","message":"Only mailables may be queued."} 

QUEUE_DRIVER=database 

和配置/ queue.php

'database' => [ 
      'driver' => 'database', 
      'table' => 'jobs', 
      'queue' => 'default', 
      'retry_after' => 90, 
     ], 

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

+0

你在终端 运行这两个命令 php工匠队列:表 php工匠迁移 –

+0

并运行php工匠配置:缓存后在.env中进行更改 –

+0

@ pdshah3690是的,我已经运行这两个命令,但仍面临同样的问题 –

回答

0

在我的情况下,我已经创建了'SendVerificationEmail'作业,并且在成功注册这样的用户之后调用这个作业。

dispatch(new SendVerificationEmail($user)); 

你也在你的代码中发送(your_job)吗?

+0

是的我已经使用了这种方法,但是这种方法没有抛出任何异常,也没有在队列中放任何工作 –

+0

这段代码将在作业中插入记录表,当你运行php artisan queue:work命令时它会开始执行你的工作。如果发生任何故障,则从作业表中删除条目并插入到failed_jobs表中。 –

1

我已经通过使用下面的代码

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

现在我能够发送电子邮件,在队列中发现的问题

感谢帮助我

+0

执行此代码后,必须检查作业和jobs_failed表中的条目 –