向社区问好!
我最近用 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 中找到了每个博客,但没有任何效果。
知道发生了什么事吗? 我是否缺少一些需要配置的东西?
我升级到新的9版本后遇到了这个问题,所以你需要按照两个步骤操作。
编辑位于项目根目录中描述邮件设置的位置的
.env
文件,将 tls
更改为 null
。如果没有这样的行,请添加
MAIL_ENCRYPTION=空
如果你有版本 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,
],
您可以尝试修改项目的
MAIL_MAILER
文件中的 .env
值。具体来说,您可以将其从 smtp
更改为 sendmail
。
.env
文件是 Laravel 用于定义特定于环境的变量的配置文件。 MAIL_MAILER
变量用于指定 Laravel 用于发送电子邮件的邮件驱动程序。默认情况下,它设置为 smtp
,表示简单邮件传输协议。