Laravel 9 でメールが送信できない

投稿者: | 2022年10月6日

自分は開発環境はDockerを利用しており、メール送信はmaildevを使っているのですが、今回Laravel 9で作ったシステムからメールを送ろうとしたところ、下記のエラーが発生しました。

Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

どうもLaravelが稼働しているサーバーとSMTPサーバーが別の場合は暗号化が必須の模様。
ローカルの開発環境なので当然そんな必要はなく、config/mail.php を下記のように記述して回避しました。

    '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,
            'local_domain' => env('MAIL_EHLO_DOMAIN'),

             'verify_peer'       => false,  // 追加
        ],