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

Laravel 5.5无法发送邮件问题求助

Hey there! 这种明明配置看起来没问题、脚本也跑通但就是收不到邮件的情况确实挺挠头的,我帮你梳理几个常见的排查方向,你可以逐一核对下:

先检查邮件驱动与.env配置细节
  • 首先确认.env里的邮件驱动设置,比如用SMTP的话,MAIL_MAILER=smtp。不同邮箱的SMTP参数差异不小,举几个常见的:
    • QQ邮箱:MAIL_PORT=465,加密方式MAIL_ENCRYPTION=ssl,还要记得去QQ邮箱开启SMTP服务并获取授权码(不是登录密码)
    • 163邮箱:MAIL_PORT=465或994,同样用ssl加密,也要开启SMTP服务
    • Gmail的话,需要开启两步验证并生成应用专用密码,普通登录密码没用
  • 检查.env里的MAIL_FROM_ADDRESS是否和你登录的邮箱完全一致,很多邮箱不允许用非注册地址发件
  • 别忘了执行php artisan config:cache刷新配置缓存!有时候修改.env后缓存没更新,代码还是在调用旧配置,这坑我踩过好多次
查看Laravel日志与邮件调试模式
  • 虽然你说没返回错误,但可以去storage/logs/laravel.log里翻一翻,说不定藏着没抛出来的警告,比如SMTP连接超时、权限不足之类的
  • 开启邮件调试模式:在.env里设置MAIL_DEBUG=true,或者在config/mail.php里把debug设为true,这样能看到更详细的发送过程日志,比如连接SMTP服务器的每一步
  • 可以临时把MAIL_MAILER改成log,这样邮件不会真的发送,而是会写入storage/logs/laravel.log,你可以看看邮件内容、收件人地址是不是都正确,先排除发送逻辑的问题
检查RegisterController与VerifyMail类的逻辑
  • 确认在RegisterController里正确触发了邮件发送,比如:
    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    
        // 如果用Laravel自带的验证逻辑
        $user->sendEmailVerificationNotification();
        // 如果是自定义的VerifyMail类,确认实例化和发送没问题
        Mail::to($user->email)->send(new VerifyMail($user));
    
        return $user;
    }
    
  • 检查VerifyMail类的build方法,确保模板路径正确:
    public function build()
    {
        return $this->view('emails.verifyUser') // 对应resources/views/emails/verifyUser.blade.php
                    ->subject('请验证你的邮箱账号');
    }
    
    要是模板路径错了,邮件可能发送失败但不会报错(或者日志里有提示)
邮箱服务商的拦截问题
  • 先去收件箱的垃圾箱、广告文件夹里找找,很多免费邮箱会把未认证的邮件直接扔进去
  • 部分服务商(比如企业邮箱)需要设置发件域名的SPF记录,确保你的服务器IP在允许的发件列表里,不然邮件会被当成垃圾邮件拦截
  • 如果是本地开发环境,可能因为没有公网IP或反向解析,邮件被服务商拒收。可以试试用本地测试邮件工具先模拟发送,确认代码逻辑没问题,再去排查线上环境的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:14:03