如何根据用户设定的日期发送预定的电子邮件?

How to send a scheduled email based on a date made by the user?

我需要有关如何自动发送在用户指定日期前一周发送的电子邮件的帮助。例如,用户插入一条记录,其中他输入了一个日期,我想在他设定的日期前一周向他发送电子邮件提醒。我怎样才能在 laravel 中做到这一点?谢谢!由于我在截止日期前,我希望有一个快速的方法。

我的建议是 Task Scheduling。实施起来相当容易,它将在这里完成工作。

首先,创建一个command:

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's diffInDays() 方法。如果你不想要碳,你当然可以使用其他东西。

完成电子邮件逻辑后,现在您需要为此命令创建一个计划,以便 运行 在设置的时间间隔内自动执行。您可以在 App\Console\Kernel class 的 schedule() 方法中执行此操作。例如:

$schedule->command('emails:send')->daily();

此行将使您的命令每天 运行。如果您不希望它每天 运行,这里是所有 schedule frequency options

的列表

'emails:send'name 你命令的名字:

protected $signature = 'emails:send';

如果您需要更多详细信息或帮助,请告诉我。