错误 LARAVEL 电子邮件:无法连接 STARTTLS:stream_socket_enable_crypto():SSL 操作失败,代码为 1

ERROR LARAVEL EMAIL: Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1

向社区问好!

我最近用Laravel9.X开发了一个网页,在本地可以正常使用,但是当我把它上传到我的主机时,我我在发送电子邮件时遇到问题。

当我在本地测试时,它一直正常工作,我一直在使用mailtrap。既然我已经将它上传到服务器,我就有了自己的 SMTP,但它对我不起作用。我创建了 ssl 证书,但它无法向我发送任何邮件。我收到以下错误:

无法连接 STARTTLS:stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:error:14090086:SSL routines:ssl3_get_server_certificate:certificate 验证失败.

当我使用 https 访问站点时,SSL 工作正常。

我已经配置了我的 .env 文件,我在其中放置了:

HOST:我的smtp服务器; PORT: 587; ENCRYPTION TYPE:SSL; USERNAME AND PASSWORD:我的电子邮件帐户。

我也一直在触摸我位于 config/mail.php 的文件,将与 .env 文件中的配置相同。我也尝试过其他端口,例如 25、465...等等。

我曾尝试使用IMAP协议从outlook访问邮件帐户,我已经能够正确连接,因此可以访问邮件.

我检查了 Google 中的很多内容,也检查了您在 Stack Overflow 中找到的每个博客,但没有任何效果。

知道发生了什么事吗? 我是否缺少要配置的内容?

我升级到新的9版本后出现了这个问题,所以你需要按照两个步骤进行。

  1. 编辑位于项目根目录中的 .env 文件描述邮件设置的地方,将 tls 更改为 null。如果你没有这样一行,那么添加

    MAIL_ENCRYPTION=null

  2. 如果你有版本 8 那么这就足够了,但在版本 Laravel 9 中你需要打开文件 app/config/mail.php 找到一个部分 mailers smtp 添加两个选项 'auth_mode' => null'verify_peer' => 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,
    
    
                 'auth_mode'  => null,
                 'verify_peer'       => false,
             ],