根据用户条件发送计划的电子邮件(Laravel)

时间:2019-03-11 17:55:18

标签: php laravel queue schedule artisan

我面对的问题是我自己无法解决。也许有人可以帮助我。将不胜感激。 因此,我需要根据存储在数据库中的用户条件发送计划的电子邮件。 例如,用户的选择: 1.每1,2,3 ...>小时/天/月,在12.00 / 13.00 / 14.00 ...>发送带有数据库记录的电子邮件。 2.如果用户(立即)选择了频率,则邮件将立即发送,如果推迟->仅检查上次发送的电子邮件。 在运行命令php artisan schedule:run后,发送邮件,但是我不知道可以使用哪种逻辑来添加所需的所有条件,以及该将逻辑放在何处。而且不确定是否有可能。 谢谢!

我现在的结构:

class Kernel extends ConsoleKernel
    protected function schedule(Schedule $schedule){
    $schedule->call(function()
        Mail::to(‘mymail@gmail.com')->send(new SendEmailMailable());}



namespace App\Mail;
class SendEmailMailable extends Mailable
    use Queueable, SerializesModels;
public function build()
    {
        $data = [
            'type' => request()->type,
            'type2' => Setting::all()->pluck('type')->last(),
            'from' => request()->from,
            'from2' => Setting::all()->pluck('from')->last(),
            'to' => request()->to,
            'to2' => Setting::all()->pluck('to')->last(),
            'subject' => request()->subject,
            'subject2' =>Setting::all()->pluck('subject')->last(),
            'header' => request()->message_header,
            'header2' => Setting::all()->pluck('message_header')->last(),
            'errors' => request()->errors,
            'errors2' => Setting::all()->pluck('errors')->last(),
            'footer' => request()->message_footer,
            'footer2' => Setting::all()->pluck('message_footer')->last(),
        ];
        if(Setting::all()->where('frequence','=','direct')->latest()->first()) {
        return $this->view('mail.mail',$data);
        }
        else{
            die;
}}}

namespace App\Jobs;
class SendEmail implements ShouldQueue
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function handle()
{
Mail::to(‘mymail@gmail.com')->send(new SendEmailMailable());
}

0 个答案:

没有答案