【PHP/Laravel】MailHogでメール送信テスト

php-laravel

メール送信テストのベストプラクティスが分からない。
SMTP、Mailgun、Postmark、AmazonSESとか、そもそもMailファサードでさくっと実装している例もあるし、どれを使うのが良いか分からない。
今回は、MailHogを使い、メール送信テストしてみる。ローカルで確認して、Dockerは使わないとする。

インストール、起動

$ 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等で書いてあるので、その辺りを探れば確認できる。

参照

Mailhog 1.0.1
Laravel 9.x メール

Laravel, php, programming

Posted by 異世界攻略班