MailCatcher でメールを外部に送信せずにキャッチする

Laravel でローカルでメール送信が行われる作業でメール送信を確認しつつ外部にメールが送られてしまうのを防ぎたい時、MailCatcherでキャッチしてしまうと便利です。

MailCatcher は Ruby で書かれた疑似 SMTPサーバーで、アプリケーションから送信したメールをブラウザで確認できる定番ツールです。

メールをHTMLで表示する以外にもテキストで表示したりメールのDLやソースの表示も可能。

もちろんLaravelだけでなく、メールの送信にSMTPを利用するすべてのアプリケーションに利用できます。

間違って本番のメールアドレスがDBに入っていても顧客にテスト環境のメールが送信されるのを防げます。

インストール

※ もしここでパーミッションエラーが出た場合、sudoをつけるのではなくrbenvやbundlerを併用することをオススメします。

デーモン起動

表示されたURL (http://127.0.0.1:1080)にブラウザでアクセスしてみます。

インストールが完了しました。起動時にコマンドラインオプションを付加すればポートやIPの指定をしたり、ブラウザを自動的に起動することも可能です。

Laravel側の設定

デフォルト設定の場合、.envnのメールサーバーの設定当該項目をを以下のように変更します。

他の項目はnullのままでおk.

では、試しにartisan tinkerから送信してみます。

すると即座にMailCatcherの画面に表示されました。

その他の手段

Laravelの公式ドキュメントではlogドライバ、送信先の強制、Mailtrapが上げられています。このMailCatcherはMailtrapの簡易ローカル版のようなものです。

“MailCatcher でメールを外部に送信せずにキャッチする” への1件の返信

コメントを残す