【发布时间】:2020-06-02 02:40:23
【问题描述】:
我尝试使用模板向用户发送电子邮件。因此,在发送电子邮件之前,它应该检查用户是否在当天收到了电子邮件。就像一个用户应该只在一天内收到一封邮件,所以我添加了 if 语句,即
if (EmailSave::where('user_id',$user_id)->whereDate('created_at', Carbon::today())->exists()) {
在我添加此行后,邮件未发送,任何人都可以帮助我解决这个问题。我是 laravel 的新手。
foreach ($users as $user) {
foreach($auto_email_templates as $mail) {
$email_id = $mail->id;
$user_id = $user->id;
if( $user->created_at < Carbon::now()->subDays($mail->days)){ //check when the acc create
if (EmailSave::where('user_id',$user_id)->whereDate('created_at', Carbon::today())->exists()) {
if (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1){ //sent email one time only
if (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))) { //mail sent again after 30 days
$mails = new EmailSave;
$mails->user_id = $user->id;
$mails->email_id =$mail->id;
Mail::to($user->email)->send(new Automail($mail));
$mails->save();
}
}
}
}
}
}
【问题讨论】:
-
您可以在数据库中使用 email_status 列而不是 EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count() 的所有用户
-
所以我将在 EmailSave 表中创建列是@Sehdev
-
是的,然后您可以从该列检查您的电子邮件发送状态。
-
我将如何检查状态,你能告诉我更多细节吗? @Sehdev
标签: laravel email swiftmailer