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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:57:44