Laravel 8结合Gmail+XAMPP实现忘记密码发信报SSL错误如何解决
错误原因分析
- 核心配置不匹配:Gmail SMTP服务的587端口对应TLS加密协议,你当前.env配置中
MAIL_PORT=587但MAIL_ENCRYPTION=ssl,加密协议与端口不匹配导致SSL握手阶段版本校验失败,触发对应的OpenSSL报错。 - Gmail账号权限不符合要求:目前Google已禁止第三方客户端直接使用账号登录密码访问SMTP服务,需使用应用专用密码才能正常发信。
- 冗余配置可能引发冲突:Laravel的SMTP邮件驱动默认读取项目.env配置,不会调用php.ini、sendmail.ini的邮件配置,额外修改这两个文件的配置可能产生不必要的干扰。
解决步骤
- 修正.env邮件配置,参考如下正确配置:
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=你的Gmail完整地址 MAIL_PASSWORD=后续生成的Gmail应用专用密码 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=你的Gmail完整地址 MAIL_FROM_NAME="${APP_NAME}"
如果你偏好使用SSL加密,可将端口改为465,加密方式保留ssl即可,两种配置二选一即可。
2. 配置Gmail账号访问权限
- 登录Google账号,进入「安全性」设置页面,开启「两步验证」功能
- 两步验证开启后,在安全性页面搜索「应用密码」,选择应用类型为「邮件」、设备类型对应你的开发设备,生成16位应用专用密码,将该密码填入上述.env的
MAIL_PASSWORD字段,禁止使用原账号登录密码。
- 清理Laravel配置缓存
修改完.env配置后,在项目根目录执行命令php artisan config:clear清空配置缓存,确保新配置生效。 - 可选操作:将php.ini、sendmail.ini中你修改过的邮件相关配置还原为默认值,避免冗余配置干扰。
内容的提问来源于stack exchange,提问作者zelalem abebe
相关产品推荐
相关产品推荐

