[Laravel] ローカルでテストする時メール送信本文をログに書くようにする方法


またLaravelの小ネタ。
ローカルでメール送信のテストをする際、MTAを用意するのも面倒なので、とりあえずログに書いてもらうように設定しようとしてちょっと迷った。
ちなみにテスト環境はLaravel 5.0。

上記のLaravelのドキュメントを見ると、ローカルでテストするときはconfig/mail.phpのpretendをtrueに設定しろというのが書かれてるけど、これは「pretend」の名前の通り、送信したふりをするのであって、送信する本文をどっかに出力してはくれません。
単にログに
[2015-06-10 16:22:18] local.INFO: Pretending to mail message to: example@example.com
みたいに書かれるだけ。

んー。と思い調べてみたところ、メールドライバにlogを指定してpretendはfalseにしろとのこと。
config/mail.phpを以下のように設定するとログにメール本文を書くようになりました。
'driver' => 'log',
'pretend' => false,
やれやれ…。
ちなみにログは通常のアプリケーションのログに一緒に書きだされます。 よってログファイルの場所はstorage/logs/以下です。
なお当然ながらHTMLメールを送信した場合はHTMLのまま出力されるので、プレビューするにはまた別の方法が必要となりますね。

今回HTMLメールを送信する必要があったんで、ログに出力されたファイルを切り出して保存し、ブラウザで開いたりしてたんですが、結局めんどくさくなって本番サーバー上でテストしてしまいました…。


コメント