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我已创建了一个新表来检查邮件是否已发送。该表现在运行良好。但我希望确保电子邮件应再次发送给同一用户。