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

Laravel 5.6发送邮件失败求助:SMTP配置及Mailable类问题

搞定Laravel 5.6用Gmail发邮件失败的问题

嘿,我来帮你排查解决这个邮件发送失败的问题,这也是Laravel新手用Gmail发邮件时常见的坑,一步步来:

一、先搞定Gmail的安全限制(最关键!)

现在Google对第三方应用登录管得很严,普通密码根本用不了,得这么弄:

  • 优先推荐:开两步验证+生成应用专用密码
    1. 登你的Gmail账号,进「安全」设置页
    2. 先把「两步验证」开了(这一步是前提)
    3. 找到「应用专用密码」选项,生成一个专门给Laravel用的密码,把这个密码替换到你.env里的MAIL_PASSWORD字段
  • 如果不想开两步验证,试试找「不太安全的应用访问」开关打开(不过现在很多账号已经被Google移除这个选项了,还是优先上面的方法靠谱)

二、确认.env配置+清缓存

你的基础配置看起来没毛病,但要注意两点:

  1. 确保MAIL_USERNAME是完整的Gmail地址,比如mymail@gmail.com,别只写前缀
  2. 改完.env一定要清配置缓存!不然Laravel还会用旧配置,跑这俩命令:
php artisan config:clear
php artisan cache:clear

三、把你的Mailable类补全

你贴的代码里build方法没写完,正确的写法得指定邮件视图和传递数据,比如:

public function build()
{
    return $this->subject('新咨询通知') // 可以给邮件加个主题
                ->view('emails.inquiry') // 对应你在resources/views/emails下的inquiry.blade.php视图文件
                ->with('data', $this->data);
}

记得要创建对应的视图文件,在视图里就能用$data来调用你传过来的内容了。

四、写个简单测试验证逻辑

可以在routes/web.php里加个测试路由,快速验证邮件能不能发:

Route::get('/test-mail', function () {
    $testData = ['name' => '测试君', 'content' => '这是一封Laravel测试邮件'];
    Mail::to('你的测试邮箱@xxx.com')->send(new \App\Mail\InquirySent($testData));
    return '邮件发送尝试完成,去收件箱看看!';
});

访问这个路由,如果报错,Laravel会抛出具体的错误信息,比如权限问题、网络不通之类的,照着提示改就行。

五、其他可能的小坑

  • 服务器端口被封:有些服务器会屏蔽外部SMTP端口,确认你的服务器能访问smtp.gmail.com的587端口
  • TLS版本问题:如果遇到TLS相关错误,试试把MAIL_ENCRYPTION改成ssl,端口换成465试试(不过官方推荐的还是587+TLS)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:33:21