Laravelでlocalhostからメールを送信しようとすると、certificate verify failedでつまずくようになった場合に

macのlocalhostからメールサーバへアクセスする際に、以下のエラーが出る場合。

Connection could not be established with host hogehoge.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

これまではmailhogでやりくりしていたのですが……

どうしてもメールを実際に送りたくなった場合……

対応策

config/mail.php

に以下を追記すると、

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

証明書のチェックを回避できます。

Laravelのバージョンによって書き方が違うので以下の例を載せておきます。

Laravel6の場合

    /*
    |--------------------------------------------------------------------------
    | Log Channel
    |--------------------------------------------------------------------------
    |
    | If you are using the "log" driver, you may specify the logging channel
    | if you prefer to keep mail messages separate from other log entries
    | for simpler reading. Otherwise, the default channel will be used.
    |
    */

    'log_channel' => env('MAIL_LOG_CHANNEL'),

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

Laravel8の場合

    '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,
            'auth_mode' => null,
            'stream' => [
                'ssl' => [
                    'allow_self_signed' => true,
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                ],
            ],
        ],

        'ses' => [
            'transport' => 'ses',
        ],

mailers > smtp の配下に追記です。

たぶんLaravel7以降がこれだと思われます。

以上、場当たり的な対応でした(汗