2017-02-14 57 views
2

我无法在laravel 5.4中对电子邮件进行排队。在之前的laravel 5.3项目中都运行良好。Mail ::队列不起作用

发送仍在工作:

Mail::send('email.blank', ['title' => 'nice', 'content' => 'message'], function ($message) 
     { 
      $message->from('[email protected]', 'test'); 
      $message->to('[email protected]'); 
     }); 

队列不起作用:

Mail::queue('email.blank', ['title' => 'nice', 'content' => 'message'], function ($message) 
     { 
      $message->from('[email protected]', 'test'); 
      $message->to('[email protected]'); 
     }); 

,出现以下错误:

InvalidArgumentException in Mailer.php line 314: 
Only mailables may be queued. 
in Mailer.php line 314 
at Mailer->queue('email.blank', array('title' => 'nice', 'content' => 'message'), object(Closure)) in Facade.php line 221 
at Facade::__callStatic('queue', array('email.blank', array('title' => 'nice', 'content' => 'message'), object(Closure))) in EmailController.php line 16 
at EmailController->mailtest() 
at call_user_func_array(array(object(EmailController), 'mailtest'), array()) in Controller.php line 55 
at Controller->callAction('mailtest', array()) in ControllerDispatcher.php line 44 
at ControllerDispatcher->dispatch(object(Route), object(EmailController), 'mailtest') in Route.php line 203 
at Route->runController() in Route.php line 160 
at Route->run() in Router.php line 559 
at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 30 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41 
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 148 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 

我已经

创建的队列表
php artisan queue:table 
php artisan migrate 

,并改变了驱动程序数据库

UPDATE 它看起来像在laravel 5.4,你只能使用mailables

php artisan make:mail TestMail 

新创建的类中的电子邮件更改构建功能排队返回现有视图,例如

public function build() 
    { 
     return $this->view('email.test'); 
    } 

然后排队邮件

Mail::to('[email protected]')->send(new TestMail()); 

感谢

+0

你设置队列守护进程或监听监视队列? https://laravel.com/docs/5.1/queues#running-the-queue-listener。你能看到你的队列中的数据库表? –

+0

不,队列中没有工作......对于同步驱动程序也是一样!错误信息有点“只有邮件可能会排队。” – markus

+1

从laravel 5.3开始,你应该使用Mailable类来创建和发送邮件。请阅读https://laravel.com/docs/5.3/mail#generating-mailables –

回答