发送 TLS 电子邮件时 Laravel 证书验证错误

ron*_*run 3 php email openssl laravel

Windows 10、Apache httpd 2.4、PHP 7.1.4、Laravel 5.5
Gmail 的安全性较低是允许的。


我的 .env 文件:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=account@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl
Run Code Online (Sandbox Code Playgroud)

错误信息:

无法与主机 smtp.gmail.com 建立连接


MAIL_PORT=587
MAIL_ENCRYPTION=tls
Run Code Online (Sandbox Code Playgroud)

错误信息:

Stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败

如何解决“证书验证失败”错误?

ron*_*run 6

如果您的操作系统不会自动管理您的受信任证书存储:

  1. 下载cURLcacert.pem证书包

  2. 将 cacert.pem 包放在您喜欢的位置;如果您有需要接受的自签名证书,请在文本编辑器中打开捆绑包并将其添加到文件末尾。

  3. 编辑php.ini以引用此文件位置:

curl.cainfo = D:/Servers/php/sslfiles/cacert.pem
openssl.cafile = D:/Servers/php/sslfiles/cacert.pem
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动 PHP-FPM 或您的 Web 服务器,具体取决于您运行 PHP 的方式。