我想通过用户设置日期来自动将电子邮件发送到PHP中的多用户电子邮件,我的意思是用户从输入日期中选择一个日期和小时,然后将其保存在数据库中,然后就此发送电子邮件日期有什么方法可以让PHP自动执行此工作,因为我自己亲自完成了此工作,并且用户数量不断增加,也许我们必须在一天的任何几秒钟内发送电子邮件,而我想在Laravel 5.8框架中进行此工作当我成功完成时。
我在PHP文件中使用的代码,如下所示手动运行:
(通过选择日期和小时,我从数据库中获得了AssertionError: Expected call: methodA(123)
Not called
数组,就像我用代码编写的数组一样。)
$UsersEmail
我希望将来在Laravel5.8框架中完成这项工作
我的PHP版本是7.2.7,将来要使用的Laravel版本是5.8。
答案 0 :(得分:0)
您可以计划一个可能每分钟或每小时运行一次的命令,该命令检查是否在适当的时间发送任何邮件。在表中,您将有一个标志,用于指示是否发送邮件是为了不向用户发送垃圾邮件,或者您想要在此处执行任何逻辑。获取用户后,请分配工作。
SendUserMail命令
grant_type:"authorization_code"
code:"4/rgGpWyiaxxxxxxxx6j3EZANLDPmHHxxxxxxxxxxxxxxxxxxxo6bRnbBZovn1T-Setccccccccccccccccccccccccccccccccccccccccccccccxxxxxxxxxxx"
redirect_uri:"xxxxxxxx"
client_id:"xxxxxxxx"
在内核中,您必须注册命令
public function handle()
{
$users = User::where('mail_sent', false)->whereDate('mail_send_date', '<=', Carbon::now())->get();
ProcessUserMails::dispatch($users);
}
ProcessUserMails作业
protected function schedule(Schedule $schedule)
{
$schedule->command('send-user-mail')->hourly();
}
SendMailNotification
public function handle()
{
foreach ($this->users as $user) {
$user->notify(new SendMailNotification($user));
$user->update(['mail_sent', true);
}
}
UserMail
public function toMail($notifiable)
{
return (new UserMail($this->user))->to($notifiable->email);
}
这可能是您的起点。但是,请确保检查Laravel文档中有关创建命令和通知的信息,因为我只包含了代码片段。