如何通过自动设置日期和时间将电子邮件发送到PHP中的多用户电子邮件

时间:2019-10-07 09:06:49

标签: php laravel laravel-5 laravel-5.8 php-7.3

我想通过用户设置日期来自动将电子邮件发送到PHP中的多用户电子邮件,我的意思是用户从输入日期中选择一个日期和小时,然后将其保存在数据库中,然后就此发送电子邮件日期有什么方法可以让PHP自动执行此工作,因为我自己亲自完成了此工作,并且用户数量不断增加,也许我们必须在一天的任何几秒钟内发送电子邮件,而我想在Laravel 5.8框架中进行此工作当我成功完成时。

我在PHP文件中使用的代码,如下所示手动运行:

(通过选择日期和小时,我从数据库中获得了AssertionError: Expected call: methodA(123) Not called 数组,就像我用代码编写的数组一样。)

$UsersEmail

我希望将来在Laravel5.8框架中完成这项工作

我的PHP版本是7.2.7,将来要使用的Laravel版本是5.8。

1 个答案:

答案 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文档中有关创建命令和通知的信息,因为我只包含了代码片段。