php - Laravel 为什么用户收到相同的电子邮件
问题描述
我正在尝试向用户发送电子邮件。用户正在接收邮件,但他们正在接收相同的邮件。为什么我会面临这样的问题?第一个 if 语句是指注册系统的用户。第二个是没有登录太久的用户,最后一个是没有使用模块的用户。每个用户每天应该收到一封电子邮件。一天不超过一封。我尝试了很多方法,但没有奏效。任何人都可以在这方面提供帮助吗?
public function create()
{
$users = User::where('user_type', 2)->get();
$auto_email_templates=AutoEmailTemplate::all();
$ModuleAutoMail=module_auto_mail::all();
foreach ($users as $user) {
foreach($auto_email_templates as $mail) {
$email_id = $mail->id;
$user_id = $user->id;
if (!EmailSave::where('user_id',$user_id)->whereDate('created_at', Carbon::today())->exists()) {
if( $user->created_at < Carbon::now()->subDays($mail->days)){ //check when the acc create
$ableToSendMail = false;
if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){
$ableToSendMail = true;
}
if ($ableToSendMail) {
$mails = new EmailSave;
$mails->user_id = $user->id;
$mails->email_id =$mail->id;
Mail::to($user->email)->send(new Automail($mail));
$mails->save();
}
}
elseif ($user->last_sign_in < Carbon::now()->subDays($mail->days)) {
$ableToSendMail = false;
if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){
$ableToSendMail = true;
}
if ($ableToSendMail) {
$mails = new EmailSave;
$mails->user_id = $user->id;
$mails->email_id =$mail->id;
Mail::to($user->email)->send(new Automail($mail));
$mails->save();
}
}
else {
if( $user->last_used_module < Carbon::now()->subDays($mail->days))
{
$ableToSendMail = false;
}
if (EmailSave::where('user_id',$user_id)->exists()){
$ableToSendMail = true;
}
if ($ableToSendMail) {
$mails = new EmailSave;
$mails->user_id = $user->id;
$mails->email_id =$mail->id;
Mail::to($user->email)->send(new Automail($mail));
$mails->save();
}
}
}
}
}
}