我在 laravel 中使用队列和调度程序发送邮件时遇到问题

I have problem in sending mail in laravel with queue and scheduler

我正在使用 laravel,我需要发送邮件。我配置了 cron 作业和调度程序,但我遇到了一个特殊问题。

我可以看到我的任务正在进入作业 table.but,当 queue:work 由 cron 作业和调度程序执行时,作业 table 为空并且失败作业为空,我也没有收到任何电子邮件。

我的 cron 作业命令:

usr/local/phpcron/Isphplaravel73 / LaravelApp-path/artisan schedule:run >>/dev/null 2>&1

app/console/kernel.php :

    Protected function schedule(Schedule $schedule)
{
    $this->command('queue:work')->withoutOverlapping() ;
}

感谢您的帮助。

你必须每分钟运行 Laravel schedule:run命令,将使用以下方法,

1.将 cronjob 设为 Linux

要编辑或创建 crontab 文件,请在 UNIX / Linux shell 提示符下键入以下命令:

$ crontab -e

然后在crontab中写入Laravel命令

* * * * * usr/local/phpcron/Isphplaravel73 / LaravelApp-path/artisan schedule:run >>/dev/null 2>&1

2。在您的 cPanel 共享主机中创建一个 cronjob 在此步骤中,我们必须定义 cPanel cronjob,以便每分钟 运行 调整我们的 laravel 计划。为此,登录到 cPanel 并转到 Cron Jobs 选项,然后创建一个新的 cronjob,如下所示。 Select Once Per Minute 通用设置 下拉框中的选项。

  • 在命令文本框中根据此格式输入值。
  • 格式:/usr/local/bin/php /home/hosting_user_name/your_artisan_file_path schedule:run >> /dev/null 2>&1
  • 在命令文本框中输入命令后,点击添加新的Cron Job 按钮。
  • if Still not Working 检查每个作业的作业输出 运行

    Protected function schedule(Schedule $schedule)
    {
        $this->command('queue:work')->withoutOverlapping()->sendOutputTo($filePath) ;
    }
    

    sendOutputTo laravel 获取文件输出的方法。 https://laravel.com/docs/5.3/scheduling#task-output

    这不是 laravel 或 php 的问题,而是服务器的问题。我以前遇到过这个问题,要么购买高级电子邮件,要么使用 gmail smtp。根据我的经验,服务器的默认电子邮件不适用于 cron。