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
相关产品推荐
相关产品推荐

