📧

Laravelの開発環境で、Unable to connect with STARTTLS: stream_socket_enableエラー

2025/01/24に公開

現象

Laravel 11の開発環境で、メールを送信したところ以下のようなエラーが出てしまいました。

Unable to connect with STARTTLS: stream_socket_enable_crypto(): Peer certificate CN=`<略>` did not match expected CN=`<略>'

原因

メール送信時に使われるSSL/TLS証明書が正しい物では無いのが原因です。

正しい証明書にすれば良いのですが、(開発環境ということもあり)今回は仮の証明書のままやる方法を取りたいところです。
そこで、証明書の検証を無視することにしました。

方法

driverをconfig/mail.phpに指定している場合

例えば以下のように指定している場合です。

'driver' => env('MAIL_DRIVER', 'smtp'),

config/mail.phpのroot配列の中で、以下のように指定します。

[
    // 略
    'allow_self_signed' => true,
    'verify_peer'       => false,
    'verify_peer_name'  => false,
]

driverをconfig/mail.phpに指定していない場合

driverを使わず、defaultで指定している場合です。

'default' => env('MAIL_MAILER', 'smtp'),

config/mail.phpmailers.smtp配列の中で、以下のように指定します。

[
    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            // 略
            'allow_self_signed' => true,
            'verify_peer'       => false,
            'verify_peer_name'  => false,
        ],
    ],
]
株式会社フーリエ

Discussion