Laravel - 将来根据条件发送邮件
Laravel - Send Mail in Future based on condition
我想根据不同用户设置的时间表向他们发送电子邮件。
我阅读了有关 beanstalkd, queues and Delayed Message Queueing 的内容,目前看来适合:
$when = Carbon::now()->addMinutes($minutes); // i can calculate minutes at this moment
\Mail::to($user)->later($when, new \App\Mail\TestMail);
但我不太确定一些事情:
用户可以取消未来的计划。在那种情况下,我该如何取消将来应该发送的电子邮件。我可以在发送实际电子邮件之前在某处设置条件以进行检查吗?在 \App\Mail\TestMail
的 handle
方法上尝试了 return false
,它开始抛出错误
我使用的方法正确吗?我还阅读了有关 Scheduler 的内容,但我不知道如何取消以后的电子邮件(如果需要的话)
有很多方法可以解决这个问题。就个人而言,我会按计划将电子邮件排队,而不是将它们添加到队列中以备后用。
因此,您 运行 每天(或小时、或分钟)执行一次计划任务,其中 运行 查询 select 哪些用户需要电子邮件,然后使用该结果集,您为每个结果向队列中添加一个作业。
这样,如果用户取消订阅,您就不必担心删除已经排队的作业。
Laravel 为创建计划作业 (https://laravel.com/docs/5.4/scheduling) 提供了一个非常好的界面,然后可以通过 cronjob 调用它。
我想根据不同用户设置的时间表向他们发送电子邮件。
我阅读了有关 beanstalkd, queues and Delayed Message Queueing 的内容,目前看来适合:
$when = Carbon::now()->addMinutes($minutes); // i can calculate minutes at this moment
\Mail::to($user)->later($when, new \App\Mail\TestMail);
但我不太确定一些事情:
用户可以取消未来的计划。在那种情况下,我该如何取消将来应该发送的电子邮件。我可以在发送实际电子邮件之前在某处设置条件以进行检查吗?在
\App\Mail\TestMail
的handle
方法上尝试了return false
,它开始抛出错误我使用的方法正确吗?我还阅读了有关 Scheduler 的内容,但我不知道如何取消以后的电子邮件(如果需要的话)
有很多方法可以解决这个问题。就个人而言,我会按计划将电子邮件排队,而不是将它们添加到队列中以备后用。
因此,您 运行 每天(或小时、或分钟)执行一次计划任务,其中 运行 查询 select 哪些用户需要电子邮件,然后使用该结果集,您为每个结果向队列中添加一个作业。
这样,如果用户取消订阅,您就不必担心删除已经排队的作业。
Laravel 为创建计划作业 (https://laravel.com/docs/5.4/scheduling) 提供了一个非常好的界面,然后可以通过 cronjob 调用它。