我需要帮助,了解如何在用户指定日期前一周自动发送电子邮件。例如,一个用户插入了一个记录,他在其中输入了一个日期,我想在他设定的日期前一周向他发送一封电子邮件提醒。我怎么能在拉拉威尔做到这一点?非常感谢。我希望有一个快速的方法,因为我在最后期限。
我的建议是任务调度。它很容易实现,而且它可以在这里完成任务。
首先,创建一个命令:
php artisan make:command SendEmail //Call it as you wish
然后,在handle((方法中,编写发送电子邮件的所有逻辑。例如:
public function handle()
{
$users = User::get();
foreach($users as $user){
if(Carbon::parse($user->reminded_date)->diffInDays(Carbon::now()) == 7){ //Or however your date field on user is called
//Send an email
}
}
}
为了进行日期比较,我使用了Carbon的diffInDays((方法。如果你不想要碳的话,你当然可以用其他的东西。
完成电子邮件逻辑后,现在需要为该命令创建一个时间表,以便按设置的间隔自动运行。您可以在AppConsoleKernel
类的schedule((方法中执行此操作。例如:
$schedule->command('emails:send')->daily();
这一行将使您的命令每天运行。如果你不想让它每天运行,下面是所有时间表频率选项的列表
"电子邮件:发送"名称您的命令名称:
protected $signature = 'emails:send';
如果你需要更多的细节或帮助,请告诉我。