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

Mai*_*ida 15 php email smtp web laravel

向社区问好!

我最近用Laravel 9.X开发了一个网页,它在本地工作正常,但是当我将其上传到我的主机时,我在发送电子邮件时遇到问题。

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

无法使用 STARTTLS 连接:stream_socket_enable_crypto():SSL 操作失败,代码为 1。 OpenSSL 错误消息: error:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败

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

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

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

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

我尝试使用协议从outlookIMAP访问邮件帐户,并且我已经能够正确连接,因此可以访问邮件。

我在 Google 上检查了很多东西,也在 Stack Overflow 上找到了每个博客,但没有任何效果。

知道发生了什么事吗?我是否缺少一些需要配置的东西?

Але*_*нер 56

我升级到新的9版本后遇到了这个问题,因此需要执行两个步骤。

  1. 编辑.env位于项目根目录中描述邮件设置的位置的文件,更改tlsnull. 如果没有这样的行,则添加

    MAIL_ENCRYPTION=空

  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,
             ],
    
    Run Code Online (Sandbox Code Playgroud)

  • 它对我有用,实际上是因为我将旧版本项目升级到 laravel 9,邮件配置适用于旧版本,更新到最新版本后,我将两个参数 `verify_peer` 和 `verify_peer_name` 设置为 `false`值,我的问题解决了 (5认同)
  • 你是对的,但就我而言,我只需要添加 `'verify_peer' => false`,没有添加 `'auth_mode' => null`,而我的加密类型现在是 ssl。它工作正常。谢谢 (4认同)