Invalid Argument Exception: Only mailables may be queued. in
Laravelの少し昔のプロジェクトから、今進めているLaravel5.7にメール送信コードをコピペしたところ、以下のエラーが表示されました。
production.ERROR: InvalidArgumentException: Only mailables may be queued. in [path]\vendor\laravel\framework\src\Illuminate\Mail\Mailer.php:367該当のコード
Mail::queue( ['text' => 'emails.system.notification'], ['data' => ['message' => $data]], function ($message) use ($from, $to, $subject) { $message->from($from)->to($to)->subject($subject); } );
原因はエラーメッセージのとおりなのですが、Laravel5.4から導入されたメール送信の仕組みMailablesを利用していないことでした。メールキューを利用する場合、Mailablesインターフェースを利用しなければなりません。
ドキュメントだとこのあたり https://laravel.com/docs/5.7/mail#generating-mailables
ドキュメントだとこのあたり https://laravel.com/docs/5.7/mail#generating-mailables
解決策1 キューを利用せずにすぐ送信
Mail::queue();を
Mail::send();に置き換えます。
解決策2 Mailableを利用するように変更
過去の記事参照
Laravel5.4(5.3?)のメール送信
まとめ
エラーメッセージとドキュメントをちゃんと読もう
エラーメッセージとドキュメントをちゃんと読もう