【发布时间】:2017-02-07 17:22:23
【问题描述】:
我的代码中有一个命令,每天由 cron 运行,它会向所有新用户发送电子邮件。它曾经可以正常工作,但是在我将队列驱动程序切换到 SQS 并将 Laravel 5.2 升级到 5.3 之后,它开始抛出错误。
InvalidArgumentExceptionvendor/laravel/framework/src/Illuminate/Mail/Mailer.php:379
Invalid view.
我不知道什么可能导致错误,因为我没有删除视图。此外,当我手动运行命令时,它不会引发任何错误。
这里是命令代码:
public function handle()
{
$subscriptions = Purchase::where('created_at', '>=', Carbon::now()->subDay())
->groupBy('user_id')
->get();
$bar = $this->output->createProgressBar(count($subscriptions));
foreach ($subscriptions as $subscription) {
$user = $subscription->user;
// if ($user->is_active_customer) {
Mail::to($user)->bcc(env('BCC_RECEIPTS_EMAIL'))->send(new NeedHelp());
// }
$bar->advance();
}
$bar->finish();
$this->info("\nSuccess! " . number_format(count($subscriptions)) . ' emails were sent.');
}
这是 NeedHelp 类代码(我已更改此线程的电子邮件和发件人名称):
<?php
namespace App\Mail;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class NeedHelp extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
*/
public function __construct(){
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Need help?')
->from('default@mail.com', 'Sender')
->view('emails.need-help');
}
}
【问题讨论】:
-
视图将从您的 NeedHelp 类中调用。你也能证明一下吗?
-
@MMMTroy 添加了 NeedHelp,但我认为其中没有任何问题,因为当我通过控制台手动运行命令时,它会正确发送所有电子邮件而不会引发异常。
-
你可能是对的。无效的视图只是让我觉得它无法找到资源/视图/电子邮件/need-help.blade.php。您确定它保存在正确的位置吗?
-
@MMMTroy 是的,我已经检查了多次,还运行了 php artisan view:clear 以确保编译后的视图一切正确。
标签: laravel