我想向用户发送两次电子邮件:在特定到期日期之前的3天和1天。因此,对于 2019年4月13日的有效期,我想在 2019年4月10日和 2019年12月4日发送电子邮件。 / p>
我有此代码,但无法正常运行:
if($expireDate <= Carbon::now()->subDays(3) && $expireDate <= Carbon::now()->subDays(1)){
Mail::to($userEmail)->send(new UserPlanNearExpire($planName, $expireDate, $user));
}
这是我的工作处理方法
public function handle()
{
$userCurrentType = User::get();
foreach($userCurrentType as $user)
{
$userEmail = $user->email;
$user = $user;
foreach($user->invoices as $invoice){
$planName = $invoice->type->name;
$expireDate = $invoice->plan_expire;
}
//sending email
$expireDate = new Carbon($expireDate);
$days = $expireDate->diffInDays();
if ($days === 1 or $days === 3) {
Mail::to($userEmail)->send(new UserPlanNearExpire($planName, $expireDate, $user));
}
}
}
逻辑:
这是我的数据库,通常我应该收到ID为1
和2
的用户的两封电子邮件,因为它们距到期日期还有1
和3
天。 / p>
我得到的:
我仅收到第一位用户的一封电子邮件,首先我想可能是因为我的邮寄代码在foreach (loop)
内部,但是当我将其移出循环时,它没有发送任何邮件:)
有什么想法吗?