簡體   English   中英

Laravel 8 計划任務未在 Cpanel 上發送 Email

[英]Laravel 8 Schedule Task not sending Email on Cpanel

我想使用 Laravel 8 每分鍾通過任務調度程序發送一個 email。

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

    $schedule->call(function () {
        $adminController = new AdminController();
        $adminController->test();
    })->everyMinute();

在管理員 Controller 我有一個方法叫做測試

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

email 按預期發送到提供的 email 地址。 在此處輸入圖像描述

但是,將源代碼上傳到共享主機 cpanel 並設置 Cron 作業后,調度程序不會發送 email。

我確信 test() 方法已被觸發,因為如果您查看 test() 方法,我會在每次調用該方法時創建一個文件“cronJobTest.txt”並附加文本“Test Started”。

在此處輸入圖像描述

在此處輸入圖像描述

在我的 web 路由中,我創建了一個指向 test() 方法的路由,如果我通過該路由調用該方法,則會發送 email。 https://mylaraveldomain.com/test

Route::get("test", [AdminController::class, 'test']);

但是,如果從調度程序觸發,相同的方法不會發送 email。

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

您的服務器中有 cron 嗎? 如果不是,那就是問題所在。 請參閱 此頁面

編輯:您是否確認 cron 運行正常? 如果沒有,請先放置一個記錄某些內容的 everyMinute 作業。 首先檢查日志是否顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM