Laravel没有在调度程序内发送邮件



我创建了一个发送邮件的命令,当从控制台执行命令时,它运行良好,并发送电子邮件:

php artisan loans:notify

然后我在调度器中创建了这样的任务:

protected function schedule(Schedule $schedule)
{
$schedule->command('loans:notify')->hourlyAt(24);
}

然后执行php artisan schedule:work,调度器执行具有output:的任务

[2021-05-15T19:24:00+02:00] Execution #1 output:
Running scheduled command: "d:laragonbinphpphp-7.4.11-win32-vc15-x64php.exe" "artisan" loans:notify > "NUL" 2>&1

但是电子邮件没有被发送。

我在一份工作中尝试过,也是一样,我在发送邮件时添加了日志记录,日志记录部分可以工作,但仍然没有发送电子邮件。

这里的邮件发送部分:

public function handle()
{
$movements = BookInstanceMovement::where('borrow_returned', NULL)->whereDate('borrow_end', '<', Carbon::now())->get();
foreach ($movements as $movement) {
try {
echo "SENDING MAILn";
echo "to " . $movement->user->email . "n";
echo "book " . $movement->book_instance->book->title . "n";
Mail::to($movement->user)->send(new LateLoanMail($movement->book_instance->book->title));
} catch (Throwable $th) {
echo $th->getMessage();
}
}
}

更新

我发现调度程序中的命令可能在Windows中不起作用,因为它像一样执行它

"d:laragonbinphpphp-7.4.11-win32-vc15-x64php.exe" "artisan" loans:notify > "NUL" 2>&1

当试图在控制台上执行它时,它会出现错误:

Out-File: FileStream was asked to open a device that was not a file. For support for devices like 'com1:' or 'lpt1:', call CreateFile, then use the FileStream constructors that take an OS handle as an IntPtr.

但使用乔布斯,它可以在不发送电子邮件的情况下输出日志记录。

更新:

执行php artisan schedule:run,工作和发送电子邮件,php artisan schedule:work是队列电子邮件吗?

我参加聚会迟到了,但我也遇到了类似的问题。当某些事件发生时,我所有的邮件都使用Mailgun在Vapor上工作。然而,当创建一个发送提醒电子邮件的命令时,当vapor运行cron任务时,不会触发邮件,但它会更新数据库,说一切都很好,但如果我通过vapor UI或命令行手动执行命令,则会发送邮件。

相关内容

  • 没有找到相关文章

最新更新