Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:向一个用户发送多次电子邮件_Php_Laravel_Email_Laravel 5_Sendmail - Fatal编程技术网

Php Laravel:向一个用户发送多次电子邮件

Php Laravel:向一个用户发送多次电子邮件,php,laravel,email,laravel-5,sendmail,Php,Laravel,Email,Laravel 5,Sendmail,我希望一次向多个用户发送电子邮件,但在这种情况下,邮件会多次发送给一个用户 尽量只给每个人发一次电子邮件(不要向用户发送垃圾邮件) 这种方法行不通,任何人都可以再帮上忙 公共函数创建() { $users=User::where('User_type',2)->get(); $auto_email_templates=AutoEmailTemplate::all(); foreach($users作为$user){ foreach($auto_email_模板为$mail){ 如果($user-

我希望一次向多个用户发送电子邮件,但在这种情况下,邮件会多次发送给一个用户

尽量只给每个人发一次电子邮件(不要向用户发送垃圾邮件) 这种方法行不通,任何人都可以再帮上忙

公共函数创建()
{
$users=User::where('User_type',2)->get();
$auto_email_templates=AutoEmailTemplate::all();
foreach($users作为$user){
foreach($auto_email_模板为$mail){
如果($user->created_atsubDays($mail->days)){
邮件::发送($user->email)->发送(新的自动邮件($Mail));
$mail=新的EmailSave;
$mail->user\u id=$user->id;
$mail->email\u id=$mail->id;
$mail->save();
}
}   
}       
}
公共函数create()
{
$users=User::where('User_type',2)->get();
$auto_email_templates=AutoEmailTemplate::all();
foreach($auto_email_模板为$mail){
foreach($users作为$user){
如果($user->created_atsubDays($mail->days)){
if(EmailSave::where('email_id','=',Input::get('email_id'))->exists()){
邮件::发送($user->email)->发送(新的自动邮件($Mail));
}
否则{
返回false;
}               
$mail=新的EmailSave;
$mail->user\u id=$user->id;
$mail->email\u 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();

            }
}
公共函数创建()
{
$users=User::where('User_type',2)->get();
$auto_email_templates=AutoEmailTemplate::all();
foreach($auto_email_模板为$mail){
foreach($users as$user){//将其添加到此处
如果($user->created_atsubDays($mail->days)){
邮件::发送($user->email)->发送(新的自动邮件($Mail));
$mail=新的EmailSave;
$mail->user\u id=$user->id;
$mail->email\u id=$mail->id;
$mail->save();
}
}

希望这会有所帮助!

您有太多的循环。内部循环也会再次循环。因此,如果
$auto\u email\u template
中有数据,则同一封电子邮件将发送两次。因为您使用嵌套的foreach循环,这就是您面临此问题的原因。您希望如何处理foreach($auto\u email\u templates as$mail)?@Sehdev这是他应该解释的us@SehdevForeach($auto_email_模板为$mail)是模板正在发送到电子邮件。基本上,我正在尝试向所有用户发送自动邮件。因此,自动电子邮件模板是发送电子邮件的模板。非常感谢。它正在工作,先生。我还有一个问题。如何只为每个用户发送一次邮件。可以帮助我吗?@NavanithaMoorthy为此,您不能再添加枚举列r表,用于检查邮件是否已发送,如果未发送,则发送。@talha F我已创建了一个新表来检查邮件是否已发送。该表现在运行良好。但我希望确保电子邮件应再次发送给同一用户。