Laravel 5.6配置Mailtrap无法接收邮件问题求助
解决Laravel 5.6配置Mailtrap后无法接收密码重置邮件的问题
我之前在Laravel项目里也碰到过一模一样的情况——Auth系统显示密码重置成功,但Mailtrap收件箱始终空空如也,给你整理几个靠谱的排查步骤,一步步来应该能搞定:
一、先把Mailtrap的核心配置核对准确
首先得确保你的.env里的邮件配置完整且正确,别漏了关键项:
MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=你的Mailtrap专属用户名(在控制台Credentials板块查找) MAIL_PASSWORD=你的Mailtrap专属密码(同上,不是你注册Mailtrap用的邮箱密码!) MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=your-app@example.com MAIL_FROM_NAME="${APP_NAME}"
划重点:Mailtrap的用户名和密码是平台提供的专属凭证,别和个人邮箱账号搞混了!
二、彻底清理配置缓存(别只清一半)
虽然你已经执行过缓存命令,但有时候顺序不对或者没清全,建议按这个顺序执行:
php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear
记住:每次修改.env之后,一定要先跑config:clear,如果先执行了config:cache,新的.env配置会被缓存的静态文件覆盖,根本不会生效!
三、扒拉Laravel日志找线索
Laravel的日志文件在storage/logs/laravel.log,打开后搜索mail或者password_reset关键词,看看有没有发送失败的报错信息——比如认证失败、端口不对、发件地址格式错误这些,日志里都会写得明明白白,比瞎猜管用多了。
四、绕开Auth系统,直接测试邮件发送
有时候可能是密码重置逻辑的小问题,先写个简单的测试路由,直接发一封邮件,排除Auth的影响:
// 在routes/web.php里添加这段代码 Route::get('/test-mail', function () { Mail::raw('这是一封测试邮件', function ($message) { $message->to('test@example.com')->subject('测试Mailtrap连接'); }); return '邮件已尝试发送,去Mailtrap看看吧!'; });
访问这个路由,然后去Mailtrap收件箱查看,如果还是收不到,就看日志找问题;如果收到了,那问题可能出在Auth的密码重置配置里(比如邮件模板、收件人逻辑)。
五、检查Mailtrap本身的设置
- 确认你在Mailtrap里打开的是对应项目的Inboxes,别不小心进了其他测试收件箱
- 看看Mailtrap的
Filters设置,有没有把邮件过滤掉了
六、如果开了队列,别忘了启动worker
如果你的.env里QUEUE_DRIVER不是sync,邮件会被放进队列而不是立即发送,这时候得启动队列worker才能处理:
php artisan queue:work
测试阶段建议先把QUEUE_DRIVER改成sync,确认邮件能正常发送后再配置队列逻辑
内容的提问来源于stack exchange,提问作者Robert Kujawa
相关产品推荐
相关产品推荐

