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

Laravel 5.5 集成Mailgun无法发送邮件求助

Laravel + Mailgun邮件发送无记录问题排查

看起来你已经完成了基础配置,但邮件没发送且Mailgun控制台无任何记录,大概率是配置细节或验证环节的疏漏导致的,我整理了几个关键排查方向:

  • 清理Laravel配置缓存:Laravel会自动缓存配置文件,你修改.env、mail.php或services.php后,一定要运行php artisan config:clear。我之前就踩过这个坑——明明改对了配置,结果应用一直调用旧缓存,导致邮件请求根本没走Mailgun通道。

  • 核对Mailgun服务配置细节:
    检查config/services.php里的Mailgun配置,重点关注区域和密钥:

    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
        'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), // 若用欧盟区域需改为api.eu.mailgun.net
    ],
    

    同时确认.env里的MAIL_MAILER是否设为mailgun,别误设成log或smtp这类其他驱动。

  • 用带异常捕获的脚本测试:
    你说测试无报错,但可能没捕获到底层API异常。写个简单的路由测试:

    Route::get('/test-mail', function () {
        try {
            Mail::raw('Laravel Mailgun测试内容', function ($message) {
                $message->to('你的测试邮箱地址')->subject('Mailgun发送测试');
            });
            return '邮件请求已提交,请查收';
        } catch (\Exception $e) {
            return '发送失败:' . $e->getMessage();
        }
    });
    

    访问这个路由,就能看到真实的错误原因——比如API密钥无效、域名未验证等。

  • 确认API密钥的正确性:
    确保你用的是Mailgun控制台里的私钥(开头为key-),不是公钥或其他类型密钥。用错密钥会导致API请求静默失败,Mailgun控制台不会生成任何活动记录。

  • 再次验证域名状态:
    去Mailgun控制台确认你的域名状态是否为Active。有时候DNS记录刚添加,还处于缓存生效期(几小时到24小时),表面显示已添加,但实际未完成验证,这时候邮件会被后台拦截。

  • 查看Laravel日志细节:
    打开storage/logs/laravel.log,搜索mailgun或send相关日志。很多时候应用层面没抛出异常,但日志里会记录API返回的错误,比如“domain not verified”或“invalid API key”。

  • 检查沙箱模式限制:
    如果用的是Mailgun免费沙箱域名(sandboxxxx.mailgun.org),只能发送到你在控制台添加的Authorized Recipients列表里的邮箱,否则邮件会被静默拦截,控制台也不会有记录。

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

相关产品推荐
方舟 Agent Plan

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

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