Laravel调用Mail::test报错:Method Illuminate\Mail\Mailer::test不存在
解决Laravel中
Illuminate\Mail\Mailer::test does not exist报错问题 首先咱们得明确:Laravel的Mail门面从来没有提供过test()方法,你写的Mail::test()是不存在的,这就是报错的直接原因。下面给你两种贴合需求的解决思路,按需选择即可:
一、直接发送测试邮件(修正调用方法)
如果你只是想验证Mailgun配置是否正常、发送一封测试邮件,把不存在的test()换成Laravel官方提供的send()方法就行,修改后的完整代码如下:
Route::get('/', function () { $data = [ 'title'=>'Hello Avijit', 'content'=>'This is a testing of mailing in Laravel using mailgun' ]; Mail::send('emails.test', $data, function($message) { $message->to('019129avijit@gmail.com', 'Avijit Biswas') ->subject('This is Subject'); }); return "测试邮件已发送,请检查收件箱!"; });
二、本地调试邮件(避免实际发送)
如果你只是想在本地验证邮件内容样式,不想真的把邮件发送到真实邮箱,可以用以下两种方案:
1. 用日志驱动记录邮件内容
修改项目根目录下的.env文件,将邮件驱动改为log:
MAIL_MAILER=log
之后所有邮件都会被记录到storage/logs/laravel.log文件中,你可以直接查看邮件的完整HTML内容和参数,不会产生实际的邮件发送行为。
2. 用Mailtrap模拟收件
Mailtrap是Laravel官方推荐的邮件测试工具,能拦截所有测试邮件并在后台展示:
- 注册Mailtrap账号后获取专属的SMTP配置信息
- 修改
.env中的邮件配置项:
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=你的Mailtrap用户名 MAIL_PASSWORD=你的Mailtrap密码 MAIL_ENCRYPTION=tls
配置完成后,所有测试邮件都会被拦截到Mailtrap的后台收件箱,你可以在网页端直观查看邮件样式和内容。
额外注意事项
确保你已经在.env中正确配置了Mailgun的SMTP信息:
MAIL_MAILER=smtp MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 MAIL_USERNAME=你的Mailgun SMTP用户名 MAIL_PASSWORD=你的Mailgun SMTP密码 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=你的发件邮箱 MAIL_FROM_NAME="${APP_NAME}"
同时确认resources/views/emails/test.blade.php视图文件存在,并且在视图中正确使用了$title和$content变量。
内容的提问来源于stack exchange,提问作者Avijit Biswas
相关产品推荐
相关产品推荐

