2017-02-14 6 views
2

ich bin nicht in der Lage, E-Mails in Laravel 5.4. in vorherigen Laravel 5.3 Projekten hat alles gut funktioniert.Mail :: queue funktioniert nicht

Senden arbeitet noch:

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

Queue nicht funktioniert:

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

Mit dem folgenden Fehler:

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 

ich die Warteschlangentabelle von

erstellt haben
php artisan queue:table 
php artisan migrate 

und änderte den Treiber-Datenbank

UPDATE es aussieht wie in Laravel 5.4 Sie nur in der Lage sind, E-Mails mailables Warteschlange

php artisan make:mail TestMail 

innerhalb der neu geschaffenen Klasse ändern, um die Build-Funktion um eine existierende Ansicht zurück zu geben, zB

dann Warteschlange der Mail-

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

dank

+0

Haben Sie Setup-Queue-Dämon oder Hörer die Warteschlange zu überwachen? https://laravel.com/docs/5.1/queues#running-the-queue-listener. Können Sie Ihre Warteschlangen in der db-Tabelle sehen? –

+0

nein, es gibt keinen Job in der Warteschlange ... das gleiche für den Sync-Treiber! Die Fehlermeldung ist ein bisschen verrückt "Nur Mails können in die Warteschlange gestellt werden." – markus

+1

ab Laravel 5.3 soll die Klasse "Mailable" zum Erstellen und Versenden von Mail verwendet werden. Lesen Sie hier https://laravel.com/docs/5.3/mail#generating-mailables –

Antwort