【PHP/Laravel】MailHogでメール送信テスト
メール送信テストのベストプラクティスが分からない。
SMTP、Mailgun、Postmark、AmazonSESとか、そもそもMailファサードでさくっと実装している例もあるし、どれを使うのが良いか分からない。
今回は、MailHogを使い、メール送信テストしてみる。ローカルで確認して、Dockerは使わないとする。
Contents
インストール、起動
- インストールから起動までやった。以下の記事を参考にした。
cf) MailHogでメール送受信のテストをする - バージョンはこちらを参照。現時点ではv1.0.1だった。
$ wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
$ chmod +x MailHog_linux_amd64
$ ./MailHog_linux_amd64
- 参照記事はブラウザで確認しているようだが、指定のポートで確認出来なかったので、設定が抜けているのだと思う。サーバー上で送信できていることは確認できたので、特に不都合はなかった。
- .envも設定する。バージョン7からMAIL_MAILERに変わったようだが、ググるとMAIL_DRIVERも出てくるので分かりにくい。とりあえず以下のように設定。
- この後、$ ./MailHog_linux_amd64で起動処理して、実際にメール送信すると、ずらずらとサーバー側に表示されていることを確認した。
AIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
サーバーで確認
- 起動処理後、以下のような感じで表示されてる。
2022/7/28 00:00:00 [SMTP [::0]:00000] [PROTO: MAIL] hogehogehoge
2022/7/28 00:00:00 [SMTP [::0]:00000] [PROTO: MAIL] Session ended
- この後、メール送信すると、ずらずらとメールの内容やパスなどが表示される。
- 例えば、パスワード再設定で実際に届いたメールのリンクを踏んで確認したい場合、サーバーにはアンカーやReset = Password等で書いてあるので、その辺りを探れば確認できる。