開発中のサービスでパスワードリセットのテストをすべく、mailhogを導入しました。
でも、タイトルのようなエラーが出てなんかうまくいかない。
調べて出てきたものを試してもなんか違う。
ということで設定を見直したら、ちゃんとメールが届くようになりました。
ローカル環境版
仮想環境を使わずphp artisan serve などで動かしている場合は以下
問題箇所は .env
MAIL_DRIVER=smtp
MAIL_HOST=localhost //ここが最初はmailhogだった
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_NAME=memo
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_HOST=localhost に変えたら解決。
mailhog や 0.0.0.0 では何故かだめでした。
Dockerの場合
後日Docker環境で同じエラーが出たのでその対処法。
Docker × Laravel メールの送信処理をローカルで確認する
の通りにするだけですが。。
docker-compose.ymlを編集
docker compose.ymlにmailhogのservicesを追加。
services: mail: image: mailhog/mailhog ports: - 8025:8025
コピペしたら改行が変になったので、コピペする場合は元記事からコピーすることをお勧めします。
Laravelの .envを編集
MAIL_HOST=mail MAIL_PORT=1025 MAIL_FROM_ADDRESS=info@example.com
※MAIL_HOST はymlファイルで書いたサービス名と合わせること※
MAIL_FROM_ADDRESS はなんでもいいです。
上記を編集後Dockerを立ち上げて、mailコンテナも立ち上がっていればOK!