我想使用Laravel 8每分钟通过任务调度程序发送一封电子邮件。
下面是我在Kernel.php上的代码
$schedule->call(function () {
$adminController = new AdminController();
$adminController->test();
})->everyMinute();在Admin Controller上,我有一个名为test的方法
public function test()
{
try {
$fp = fopen('cronJobTest.txt', 'a');
fwrite($fp, "Testing Started. ");
fclose($fp);
$email = new \stdClass();
$email->subject = "Cron Job Test";
$email->greetings = "Hi, Tested";
$email->message1 = "This is a cron job tester";
$email->btn_text = 'Test';
$email->message2 = "";
$email->url = "dashboard/test";
\Illuminate\Support\Facades\Notification::route('mail', 'myemailaddressHere@gmail.com')->notify(new EmailNotification($email));
}catch (Exception $exception){
$fp = fopen('cronJobTest.txt', 'a');
fwrite($fp, "Failed with exception ".$exception->getMessage());
fclose($fp);
}
}然后在我的本地机器上运行以下命令:
php artisan schedule:work一封电子邮件将按预期发送到提供的电子邮件地址。

但是,在将源代码上传到共享主机cpanel并设置Cron作业后,计划程序不会发送电子邮件。
我确信test()方法会被触发,因为如果您查看test()方法,我会在每次调用该方法时创建一个'cronJobTest.txt‘文件,并附加文本'Test Started’。


在我的web路由中,我创建了一个指向test()方法的路由,如果我通过该路由调用该方法,则会发送一封电子邮件。ie https://mylaraveldomain.com/test
Route::get("test", [AdminController::class, 'test']);但是,如果从调度程序触发,相同的方法不会发送电子邮件。
这可能是什么原因造成的?
发布于 2021-04-27 15:30:41
你的服务器上有cron吗?如果不是,那就是问题所在。请参阅this page。
编辑:您确认cron运行正常了吗?如果没有,则首先放置一个记录某些内容的everyMinute作业。如果日志显示,请先检查。
https://stackoverflow.com/questions/67278308
复制相似问题