首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8调度任务不在Cpanel上发送电子邮件

Laravel 8调度任务不在Cpanel上发送电子邮件
EN

Stack Overflow用户
提问于 2021-04-27 14:59:22
回答 1查看 96关注 0票数 0

我想使用Laravel 8每分钟通过任务调度程序发送一封电子邮件。

下面是我在Kernel.php上的代码

代码语言:javascript
复制
    $schedule->call(function () {
        $adminController = new AdminController();
        $adminController->test();
    })->everyMinute();

在Admin Controller上,我有一个名为test的方法

代码语言:javascript
复制
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);
    }
}

然后在我的本地机器上运行以下命令:

代码语言:javascript
复制
php artisan schedule:work

一封电子邮件将按预期发送到提供的电子邮件地址。

但是,在将源代码上传到共享主机cpanel并设置Cron作业后,计划程序不会发送电子邮件。

我确信test()方法会被触发,因为如果您查看test()方法,我会在每次调用该方法时创建一个'cronJobTest.txt‘文件,并附加文本'Test Started’。

在我的web路由中,我创建了一个指向test()方法的路由,如果我通过该路由调用该方法,则会发送一封电子邮件。ie https://mylaraveldomain.com/test

代码语言:javascript
复制
Route::get("test", [AdminController::class, 'test']);

但是,如果从调度程序触发,相同的方法不会发送电子邮件。

这可能是什么原因造成的?

EN

回答 1

Stack Overflow用户

发布于 2021-04-27 15:30:41

你的服务器上有cron吗?如果不是,那就是问题所在。请参阅this page

编辑:您确认cron运行正常了吗?如果没有,则首先放置一个记录某些内容的everyMinute作业。如果日志显示,请先检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67278308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档