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

Laravel配置SMTP邮件遇认证错误:预期响应码250却收到530

解决Laravel SMTP配置出现530认证错误的方案

嘿,我之前也踩过Mailtrap和Laravel SMTP认证的坑,给你几个实用的排查和解决步骤,应该能帮你搞定这个问题:

  • 先清除配置缓存,确保.env生效
    Laravel会缓存配置文件,有时候你修改了.env但旧配置还在生效。运行这两个命令:

    php artisan config:clear
    php artisan cache:clear
    

    之后重启你的本地服务(比如Valet、XAMPP或者Docker容器),再测试邮件发送。

  • 仔细核对Mailtrap的凭证
    登录Mailtrap控制台,进入你正在使用的Inbox,复制页面上给出的SMTP Username和Password,和你.env里的MAIL_USERNAME、MAIL_PASSWORD逐字符对比——有时候复制时会不小心带了空格,或者凭证过期(虽然Mailtrap的测试凭证一般不会过期,但也可以重新生成一个试试)。

  • 调整加密方式测试
    你的MAIL_ENCRYPTION=TLS是对的,但某些环境下TLS握手可能出问题。可以临时改成:

    MAIL_ENCRYPTION=null
    

    注意这里是null(没有引号),不是字符串"null",然后再测试发送。

  • 检查config/mail.php的配置
    确保config/mail.php里的smtp驱动配置是正确读取.env变量的,没有硬编码的旧值:

    'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
        'port' => env('MAIL_PORT', 587),
        'encryption' => env('MAIL_ENCRYPTION', 'tls'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
        'timeout' => null,
        'auth_mode' => null,
    ],
    

    如果这里的username或password是硬编码的,会覆盖.env的配置,导致认证失败。

  • 用最简代码测试发送
    排除业务代码的干扰,在routes/web.php里加一个测试路由:

    Route::get('/test-email', function () {
        \Illuminate\Support\Facades\Mail::raw('这是测试邮件内容', function ($message) {
            $message->to('test@example.com')
                    ->subject('Laravel测试邮件');
        });
        return '邮件发送请求已提交!';
    });
    

    访问这个路由,然后去Mailtrap的Inbox查看是否收到邮件,同时看终端有没有新的错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:44:55