我想一次性向许多用户发送电子邮件,但在这种情况下,邮件会多次向一个用户发送。
尝试只向每个人发送一次电子邮件(不要向用户发送垃圾邮件) 这种方法不起作用,任何人都可以再次帮助解决这个问题。
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/