php - 拉拉维尔 : email send multiples times to one user

标签 php laravel email laravel-5 sendmail

我想一次性向许多用户发送电子邮件,但在这种情况下,邮件会多次向一个用户发送。

尝试只向每个人发送一次电子邮件(不要向用户发送垃圾邮件) 这种方法不起作用,任何人都可以再次帮助解决这个问题。

    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();

                }

最佳答案

因为您正在使用嵌套的 foreach 循环,这就是您面临此问题的原因。如果您想将每个模板发送给每个用户,那么您可以简单地交换循环,例如:

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();

            }
}

希望这会有所帮助!

关于php - 拉拉维尔 : email send multiples times to one user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60180813/

相关文章:

php - Laravel 5.8 修改密码功能

php - Mysql 返回 ***** 而不是数字

PHP 图片上传无法正常工作,但一切似乎都正确?

php - 仅在提交表单时调用 PHP 函数

php - Laravel 糟糕的 wordfilter 作为助手

android - 如何在 Android 上自动发送电子邮件?

PHP SwiftMailer 或 PEAR 邮件

node.js - AWS-SES 电子邮件地址未验证。 Gmail 帐户

php - PHP 中的安全用户图像上传功能

javascript - 删除前的 Sweet Alert 确认