Laravel控制台命令发送邮件提示视图不存在求助
Laravel控制台命令发送邮件时找不到视图的排查方案
嘿,我看到你遇到的问题了——明明确认视图路径正确,但执行控制台命令时还是抛出找不到视图的错误,这确实挺让人困惑的。不过仔细看一下错误信息,你就能发现关键所在!
你的相关代码
<?php foreach ($doctors_notifications_pre['seg3'] as $doctor_id => $doctor_data) { DB::beginTransaction(); try { $this->registerMailStatus($doctor_data, $seg=3, Mails::PRE); Mail::send('emails.prependantSeg3', array('item' => $doctor_data), function($message) { $message->from('admin@inventedemail.com') ->to('testing@inventedemail.com') ->subject('Diabet Reseach notification'); }); DB::commit(); } catch (Exception $e) { DB::rollback(); } }
执行命令时的错误输出
[InvalidArgumentException] View [emails.prependantSeg1] not found. Exception trace: () at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php:137 Illuminate\View\FileViewFinder->findInPaths() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php:79 Illuminate\View\FileViewFinder->find() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/View/Factory.php:165 Illuminate\View\Factory->make() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php:441 Illuminate\Mail\Mailer->getView() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php:321 Illuminate\Mail\Mailer->addContent() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php:161 Illuminate\Mail\Mailer->send() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:221 Illuminate\Support\Facades\Facade::__callStatic() at /mnt/c/Desarrollo/regueifa1.0/app/Console/Commands/SendMails.php:40 App\Console\Commands\SendMails->handle() at n/a:n/a call_user_func_array() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Container/Container.php:507 Illuminate\Container\Container->call() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Console/Command.php:169 Illuminate\Console\Command->execute() at /mnt/c/Desarrollo/regueifa1.0/vendor/symfony/console/Command/Command.php:256 Symfony\Component\Console\Command\Command->run() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Console/Command.php:155 Illuminate\Console\Command->run() at /mnt/c/Desarrollo/regueifa1.0/vendor/symfony/console/Application.php:794 Symfony\Component\Console\Application->doRunCommand() at /mnt/c/Desarrollo/regueifa1.0/vendor/symfony/console/Application.php:186 Symfony\Component\Console\Application->doRun() at /mnt/c/Desarrollo/regueifa1.0/vendor/symfony/console/Application.php:117 Symfony\Component\Console\Application->run() at /mnt/c/Desarrollo/regueifa1.0/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107 Illuminate\Foundation\Console\Kernel->handle() at /mnt/c/Desarrollo/regueifa1.0/artisan:35
问题根源
你仔细看错误提示里的视图名称:emails.prependantSeg1,但你现在贴出来的代码里调用的是emails.prependantSeg3!这说明你的代码中还有处理其他分段(比如seg1)的逻辑,而那部分逻辑里引用的视图文件resources/views/emails/prependantSeg1.blade.php并不存在,或者你在代码中写错了视图名称。
解决方案
- 全局检查代码:搜索你的
SendMails.php文件(或者整个项目)中所有调用Mail::send()的地方,找到引用emails.prependantSeg1的代码位置。 - 创建缺失的视图:如果确实需要给seg1的医生发送邮件,就创建对应的视图文件
resources/views/emails/prependantSeg1.blade.php,可以复制seg3的视图内容再做调整。 - 修正笔误:如果是代码中的拼写错误(比如把Seg3写成了Seg1),直接把视图名称修正为正确的
emails.prependantSeg3。 - 检查大小写:因为你是在Linux环境下运行(路径里有
/mnt/c/,应该是WSL),Linux区分文件名大小写,确认视图文件名的大小写和代码中的引用完全一致。
内容的提问来源于stack exchange,提问作者Zarovich
相关产品推荐
相关产品推荐

