Laravel 8发送邮件遇Swift_TransportException认证错误求助
Laravel 8 邮件通知认证错误排查(530 authentication Required)
我在Laravel 8中实现邮件通知功能时,反复遇到认证失败问题。已经按各类技术平台的建议修改了.env和mail.php配置,但问题仍未解决。
错误详情
Swift_TransportException
预期响应码250但收到码"530",提示信息为"530 Error: authentication Required"
触发路径:http://localhost:8000/forgot-password
当前配置文件
.env 文件内容
MAIL_DRIVER=smtp MAIL_MAILER=smtp MAIL_HOST=smtp-pulse.com MAIL_PORT=587 MAIL_USERNAME=xxx.xxx@gmail.com MAIL_PASSWORD=5mbE7LbBtcJc MAIL_ENCRYPTION=TLS MAIL_FROM_ADDRESS=xxx.xxx@gmail.com MAIL_FROM_NAME="${APP_NAME}"
mail.php 文件内容
<?php return [ 'default' => env('MAIL_MAILER', 'smtp'), 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp-pulse.com'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'TLS'), 'username' => env('xxx.xxx@gmail.com'), 'password' => env('5mbE7LbBtcJc'), 'timeout' => null, 'auth_mode' => null, ], 'ses' => [ 'transport' => 'ses', ], 'mailgun' => [ 'transport' => 'mailgun', ], 'postmark' => [ 'transport' => 'postmark', ], 'sendmail' => [ 'transport' => 'sendmail', 'path' => '/usr/sbin/sendmail -bs', ], 'log' => [ 'transport' => 'log', 'channel' => env('MAIL_LOG_CHANNEL'), ], 'array' => [ 'transport' => 'array', ], ], 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'xxx.xxx@gmail.com'), 'name' => env('MAIL_FROM_NAME', 'Company name'), ], 'markdown' => [ 'theme' => 'default', 'paths' => [ resource_path('views/vendor/mail'), ], ], ];
问题修复方案
核心错误修正
mail.php中SMTP配置的username和password参数调用env()函数时,错误地直接传入了账号密码值,正确写法应该是传入对应的环境变量名:
修改前:
'username' => env('xxx.xxx@gmail.com'), 'password' => env('5mbE7LbBtcJc'),
修改后:
'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'),
后续操作
- 修改配置后,必须清除Laravel配置缓存,执行命令:
php artisan config:clear
- 确认
smtp-pulse.com是否支持使用Gmail账号作为认证用户,部分第三方SMTP服务要求使用平台自身的账号密码而非邮箱密码 - 若使用Gmail账号,需检查:
- 若开启两步验证,需生成并使用应用专用密码
- 若未开启两步验证,可临时允许低安全性应用访问(仅测试环境使用,生产环境不推荐)
内容的提问来源于stack exchange,提问作者user3606682
相关产品推荐
相关产品推荐

