mailhogでメールテストしたいのにconnection could not be established with host localhost stream_socket_client()

Laravel

開発中のサービスでパスワードリセットのテストをすべく、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!

タイトルとURLをコピーしました