ハマログ

株式会社イーツー・インフォの社員ブログ

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
解決策1 キューを利用せずにすぐ送信
Mail::queue();
Mail::send();
に置き換えます。
解決策2 Mailableを利用するように変更
まとめ
エラーメッセージとドキュメントをちゃんと読もう
LaravelLaravel5Laravel5.4Laravel5.6Laravel5.7MailPHP

kaneko tomo   kaneko tomo   2018年12月28日


関連記事

Laravelのメール文字化け対策

Laravelのメール送信で文字化けと対決したのでその記録。 Swift Mai…

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(後編)

遂に後編を書くときが来ました。 てるおです。 はいどーも! やることはもう決まっ…

さくらインターネットのcronでphpを動かす

さくらインターネットのレンタルサーバではcronでのスケジュール処理を利用するこ…


← 前の投稿

次の投稿 →