You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8发送邮件报错:无法连接smtp.gmail.com,证书流加载失败

解决Laravel 8连接smtp.gmail.com的证书加载失败问题

问题分析

错误核心是OpenSSL证书文件/opt/homebrew/etc/openssl@1.1/cert.pem无法加载,导致SwiftMailer无法建立SSL连接到Gmail的SMTP服务器。

解决方案

1. 确认并修复证书文件

首先检查指定路径的证书是否存在:

ls /opt/homebrew/etc/openssl@1.1/cert.pem
  • 若文件不存在,重新安装Homebrew的OpenSSL 1.1:
brew reinstall openssl@1.1
  • 若仍无法生成证书,手动下载标准CA证书链:
curl -s https://curl.se/ca/cacert.pem > /opt/homebrew/etc/openssl@1.1/cert.pem

2. 配置Laravel指向正确证书

在项目根目录的.env文件中,添加SMTP流上下文配置,明确指定证书路径:

MAIL_ENCRYPTION=tls
MAIL_SMTP_STREAM_CONTEXT='{"ssl":{"cafile":"/opt/homebrew/etc/openssl@1.1/cert.pem"}}'

如果证书路径已更新到系统默认信任路径,也可简化为:

MAIL_SMTP_STREAM_CONTEXT='{"ssl":{"verify_peer":true,"verify_peer_name":true}}'

3. 修正Gmail SMTP访问权限

Gmail的SMTP访问需要额外配置:

  • 测试环境:开启Google账户的低安全性应用访问(生产环境禁用此选项)。
  • 生产环境:开启Google账户2步验证后,生成应用密码,替换.env中的MAIL_PASSWORD。
  • 标准Gmail SMTP配置示例:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的gmail账户@gmail.com
MAIL_PASSWORD=你的应用密码或账户密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的gmail账户@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

4. 验证PHP的OpenSSL配置

检查PHP是否正确加载了证书路径:

php -i | grep "openssl.cafile"

若输出为空,在php.ini中添加证书路径配置:

openssl.cafile=/opt/homebrew/etc/openssl@1.1/cert.pem

修改后重启PHP服务(如FPM或内置开发服务器)。

内容的提问来源于stack exchange,提问作者Kamania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:06:29