LoginSignup
4
4

More than 5 years have passed since last update.

[MailhogとLaravel]Expected response code 220 but got code "500"のエラー解決方法

Posted at

Expected response code 220 but got code "500"

上記のようなエラーが発生する場合の解決方法

環境

  • docker
  • laravel
  • mailhog
  • 開発環境(ENV=development)

問題点:確実に環境変数

  • 500エラーが帰ってきているのでメールサーバにはアクセスできている
  • 環境変数自体がおかしいか、読み込めていない

実際に通る.env

MAIL_USERNAMEMAIL_PASSWORDMAIL_ENCRYPTIONはNULLを設定しておきましょう。

MAIL_DRIVER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

解決方法

上記の環境変数さえ読み込めれば、実行はできる。
もしこれを設定してできない場合は環境変数がうまく読み込めていない。
以下の手順で確認してください。

0.環境変数が読み込めているか確認するコマンド

\Config::get('mail')

上記コマンドを実行して、意図した環境変数になっているか確認。
image.png

なっていない場合は以下の手順を試すべし

1.キャッシュクリア

bash
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

2.環境変数ロード

bash
. .env
# もしくは環境変数を環境ごとに分けてる場合は読み込みたいファイルを指定
. .env.development

3.環境変数直接設定する

bash
MAIL_DRIVER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

4.最終手段、mail.phpを書き換える

環境変数を実際に読み込んでいるのはconfig/mail.phpというファイルだ。
ここの環境変数を読み込む部分を削除し、直接値を書き込んでしまえば良い。

bash
'encryption' => env('MAIL_ENCRYPTION', 'ssl'),

# こうなっているのをこうじゃ!

'encryption' => env(''),
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4