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

问题描述 投票:0回答:2

向社区问好!

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

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

无法使用 STARTTLS 连接:stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误: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...等等。

我尝试使用IMAP协议从

outlook
访问邮件帐户,并且我已经能够正确连接,因此可以访问邮件。

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

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

php laravel email web smtp
2个回答
57
投票

我升级到新的9版本后遇到了这个问题,所以你需要按照两个步骤操作。

  1. 编辑位于项目根目录中描述邮件设置的位置的

    .env
    文件,将
    tls
    更改为
    null
    。如果没有这样的行,请添加

    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,
             ],
    

0
投票

您可以尝试修改项目的

MAIL_MAILER
文件中的
.env
值。具体来说,您可以将其从
smtp
更改为
sendmail

.env
文件是 Laravel 用于定义特定于环境的变量的配置文件。
MAIL_MAILER
变量用于指定 Laravel 用于发送电子邮件的邮件驱动程序。默认情况下,它设置为
smtp
,表示简单邮件传输协议。

© www.soinside.com 2019 - 2024. All rights reserved.