Laravel: электронная почта отправляется несколько раз одному пользователю - PullRequest
2 голосов
/ 12 февраля 2020

Я хочу отправить электронное письмо многим пользователям за один раз, но в этом случае почта отправляется несколько раз одному самому пользователю.

Попытка отправить каждому человеку по электронной почте только один раз (не спам пользователям) не работал с этим методом, кто-нибудь может снова помочь этой вещи.

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

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

                if( $user->created_at < Carbon::now()->subDays($mail->days)){

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

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


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


                if( $user->created_at < Carbon::now()->subDays($mail->days)){

                    if (EmailSave::where('email_id', '=', Input::get('email_id'))->exists()) {
                        Mail::to($user->email)->send(new Automail($mail));
                    }
                   else {  
                       return false;
                   }               

                    $mail = new EmailSave;
                    $mail->user_id = $user->id;
                    $mail->email_id =$mail->id;
                    $mail->save();

                }

1 Ответ

2 голосов
/ 12 февраля 2020

Поскольку вы используете вложенный foreach l oop, именно поэтому вы столкнулись с этой проблемой. Если вы хотите отправить каждый шаблон каждому пользователю, вы можете просто поменять свои циклы следующим образом:

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



  foreach($auto_email_templates as $mail){ 
       foreach ($users as $user) { // add this to here

            if( $user->created_at < Carbon::now()->subDays($mail->days)){

                Mail::to($user->email)->send(new Automail($mail));


                $mail = new EmailSave;
                $mail->user_id = $user->id;
                $mail->email_id =$mail->id;
                $mail->save();

            }
}

Надеюсь, это поможет!

...