LoginSignup
3
0

More than 1 year has passed since last update.

laravel 9 ローカルでメール送信ができなくなったときの解決方法

Last updated at Posted at 2022-03-07

Laravel6からLaravel9へアップグレード対応しました。
mailtrapでも良いのですが、私はdockerでmaildevイメージからコンテナ立ててます。
メール送信できなくなったので、あれ?と思い、とりあえずマニュアル探してその通りにしていった。

logにはでてるよーOKだよう。

[2022-03-08 01:26:44] local.DEBUG: From: Laravel <xxx@gild.co.jp>
To: Test <abc987@example.com>
Subject: This is a test mail
MIME-Version: 1.0
Date: Tue, 08 Mar 2022 01:26:44 +0900
Message-ID: <29aba2d91dbc8133538510e01160cfe4@gild.co.jp>
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<p>=E3=83=86=E3=82=B9=E3=83=88=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=AE=E9=80=
=81=E4=BF=A1=E3=81=A7=E3=81=99=E3=80=82</p>

じゃあdriverをsmtpに戻してmailコンテナに疎通するようにしてみるよーう。
/mailでgetアクセスしてみると...ヒーハー!

スクリーンショット 2022-03-08 2.15.17.png

まじか。
laravel6では問題なかった気がするんだけどなぁ...
ということでdockerのマウント先に、laravel6のときのリソースを参照するように、laravel9の入ってるディレクトリ名を退避させて、laravel6の入ってるディレクトリ名を変更。
で、実行してみるとmailコンテナで受信してることを確認したわけさ。

スクリーンショット 2022-03-08 2.18.28.png

ってことはdockerには問題ないことがわかったので一安心。
laravel6とkaravel9とでmail周りのなにかが変わったなとそれらしいキーワードで探っていく。
そしたら、こんな記事に辿り着き、こんなんがconfig/mail.phpに必要なんだとか。

'stream' => [
   'ssl' => [
      'allow_self_signed' => true,
      'verify_peer' => false,
      'verify_peer_name' => false,
   ],
],

とりあえず、laravel6と9のconfig/mail.php見比べてみたけど、どっちにも上記のような記述はない。
とりあえず、まぁここらへんに記述して/mailでgetアクセスしてみるも、変わらず。

    'mailers' => [
        'smtp' => [
            'transport'  => 'smtp',
            'host'       => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port'       => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username'   => env('MAIL_USERNAME'),
            'password'   => env('MAIL_PASSWORD'),
            'timeout'    => null,
            'stream' => [
                'ssl' => [
                    'allow_self_signed' => true,
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                ],
            ],
        ],

で、最終的にこれ。

いや、解決の線はあってたけど配列構造が違ったみたい。
だから以下にしたらあっさり送信できたよ。

    'mailers' => [
        'smtp' => [
            'transport'  => 'smtp',
            'host'       => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port'       => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username'   => env('MAIL_USERNAME'),
            'password'   => env('MAIL_PASSWORD'),
            'timeout'    => null,
            'verify_peer' => false,
        ],

https://laravel.com/ の方に書いてたみたいだけど、英文はわかりづらいですなぁというか見つけられん。

3
0
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
3
0