userid)->where('created_at', '>', Carbon::now()->subMinutes(30))->first(); if ($res) return; //删除 self::whereUserid($user->userid)->delete(); $userEmailVerification = self::createInstance([ 'userid' => $user->userid, 'email' => $user->email, 'code' => Base::generatePassword(64), 'status' => 0, ]); $userEmailVerification->save(); $setting = Base::setting('emailSetting'); $url = Base::fillUrl('single/valid/email') . '?code=' . $userEmailVerification->code; try { if (!Base::isEmail($user->email)) { throw new \Exception("User email '{$user->email}' address error"); } $subject = env('APP_NAME') . " 绑定邮箱验证"; $content = "

{$user->nickname} 您好,您正在绑定 " . env('APP_NAME') . " 的邮箱,请于30分钟之内点击以下链接完成验证 :

{$url}

"; Factory::mailer() ->setDsn("smtp://{$setting['account']}:{$setting['password']}@{$setting['smtp_server']}:{$setting['port']}?verify_peer=0") ->setMessage(EmailMessage::create() ->from(env('APP_NAME', 'Task') . " <{$setting['account']}>") ->to($user->email) ->subject($subject) ->html($content)) ->send(); } catch (\Exception $e) { if (str_contains($e->getMessage(), "Timed Out")) { throw new ApiException("language.TimedOut"); } elseif ($e->getCode() === 550) { throw new ApiException('邮件内容被拒绝,请检查邮箱是否开启接收功能'); } else { throw new ApiException($e->getMessage()); } } } }