我的代码中有一个命令,由 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 AppMail;
use AppUser;
use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
use IlluminateContractsQueueShouldQueue;
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');
}
}
我发现了错误。原因是我不小心将两个应用程序连接到同一个队列,导致它们处理彼此的作业和电子邮件,从而导致此错误。