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

Laravel使用Gmail SMTP发找回密码邮件报530 STARTTLS错误如何解决

问题原因

  • 核心配置错误:Gmail SMTP服务的587端口强制要求使用TLS加密,你当前.env文件中MAIL_ENCRYPTION参数设置为null,未启用TLS加密,因此SMTP服务器返回530错误,要求先执行STARTTLS命令。
  • 配置结构冗余:你使用的config/mail.php文件中同时存在mailers.smtp数组内的加密、账号、密码配置,和数组外层的同名配置项,Laravel 7及以上版本优先读取mailers.smtp下的配置,冗余配置可能在异常场景下引发加载冲突。
  • 配置未生效:若修改.env后仅执行config:cache,未先清除旧缓存,或是使用队列发送邮件时未重启队列进程,都会导致新配置不生效。

可行解决方案

1. 修正.env邮件配置

将.env中的MAIL_ENCRYPTION参数值改为tls,修改后完整的邮件配置如下:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyEmail@gmail.com
MAIL_PASSWORD=你的Gmail应用密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=MyEmail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

注意:如果你的Gmail账号开启了两步验证,此处必须填写账号生成的「应用密码」,不可使用账号登录密码;目前Gmail已经下线「低安全性应用」选项,未开启两步验证的账号无法通过SMTP发信,建议先开启两步验证后生成应用密码使用

2. 清理冗余配置(可选但推荐)

删除config/mail.php中mailers数组外层的三个冗余配置项,避免优先级冲突,需要删除的内容如下:

'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME','hospitalnuestrocorazon@gmail.com'),
'password' => env('MAIL_PASSWORD','################'),

3. 刷新配置并重启服务

依次执行以下命令确保配置生效:

  • 清除旧配置缓存:php artisan config:clear
  • 生产环境可重新生成配置缓存:php artisan config:cache
  • 若使用队列发送邮件,必须重启队列进程:php artisan queue:restart

验证配置

配置完成后可通过tinker快速测试发信,执行php artisan tinker进入交互模式后,运行以下代码:

Mail::raw('邮件测试内容', function ($message) {
    $message->to('接收测试的邮箱地址')->subject('Laravel邮件测试');
});

若无报错则代表配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:06:04