Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel-根据条件在将来发送邮件_Laravel_Email_Cron_Queue_Beanstalkd - Fatal编程技术网

Laravel-根据条件在将来发送邮件

Laravel-根据条件在将来发送邮件,laravel,email,cron,queue,beanstalkd,Laravel,Email,Cron,Queue,Beanstalkd,我想根据用户设定的时间表向他们发送电子邮件 我读到了,现在它看起来很适合: $when = Carbon::now()->addMinutes($minutes); // i can calculate minutes at this moment \Mail::to($user)->later($when, new \App\Mail\TestMail); 但有几件事我不太确定: 用户可以取消未来的计划。在这种情况下,我该如何取消一封将来应该发送的电子邮件呢。在发送实际电子邮件之

我想根据用户设定的时间表向他们发送电子邮件

我读到了,现在它看起来很适合:

$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
    ,它开始抛出错误

  • 我是否使用了正确的方法。我也读过,但我不知道如何取消未来的电子邮件(如果需要的话)


  • 有很多方法可以做到这一点。就我个人而言,我会按照时间表对电子邮件进行排队,而不是将它们添加到队列中以供以后使用

    因此,您每天(或每小时或每分钟)运行一次计划任务,运行查询以选择哪些用户需要电子邮件,然后使用该结果集,为每个结果向队列中添加作业

    这样,如果用户取消订阅,您就不必担心删除已经排队的作业


    Laravel提供了一个非常好的界面,用于创建计划作业(),然后可以通过cronjob调用该作业。

    在电子邮件表中创建一个db字段,如果它对应的是电子邮件,则该字段应处于活动状态,否则,如果用户取消订阅或停止获取,则该字段应为0,以便您可以使用“处于活动状态”的条件。。