首页 > 解决方案 > Laravel 为什么用户收到相同的电子邮件

问题描述

我正在尝试向用户发送电子邮件。用户正在接收邮件,但他们正在接收相同的邮件。为什么我会面临这样的问题?第一个 if 语句是指注册系统的用户。第二个是没有登录太久的用户,最后一个是没有使用模块的用户。每个用户每天应该收到一封电子邮件。一天不超过一封。我尝试了很多方法,但没有奏效。任何人都可以在这方面提供帮助吗?

 public function create() 
   {
         $users = User::where('user_type', 2)->get();
         $auto_email_templates=AutoEmailTemplate::all();
         $ModuleAutoMail=module_auto_mail::all();



    foreach ($users as $user) {
        foreach($auto_email_templates as $mail) {

            $email_id = $mail->id;
            $user_id = $user->id;


            if (!EmailSave::where('user_id',$user_id)->whereDate('created_at', Carbon::today())->exists()) {
                if( $user->created_at < Carbon::now()->subDays($mail->days)){  //check when the acc create

                    $ableToSendMail = false;

                    if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){  
                        $ableToSendMail = true;
                    }

                    if ($ableToSendMail) {
                        $mails = new EmailSave;
                        $mails->user_id = $user->id;
                        $mails->email_id =$mail->id;
                        Mail::to($user->email)->send(new Automail($mail));
                        $mails->save();
                    }
                }
                elseif ($user->last_sign_in < Carbon::now()->subDays($mail->days)) {

                            $ableToSendMail = false;

                        if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){  
                            $ableToSendMail = true;
                        }    
                        if ($ableToSendMail) {
                            $mails = new EmailSave;
                            $mails->user_id = $user->id;
                            $mails->email_id =$mail->id;
                            Mail::to($user->email)->send(new Automail($mail));
                            $mails->save();
                        }
                }
                else {
                    if( $user->last_used_module < Carbon::now()->subDays($mail->days))
                    {   
                        $ableToSendMail = false;
                    }
                        if (EmailSave::where('user_id',$user_id)->exists()){

                            $ableToSendMail = true;
                        }

                        if ($ableToSendMail) {

                            $mails = new EmailSave;
                            $mails->user_id = $user->id;
                            $mails->email_id =$mail->id;
                            Mail::to($user->email)->send(new Automail($mail));
                            $mails->save();

                        }
                }     
            }         
        }
    }
}

标签: phplaravelemail

解决方案


推荐阅读