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

{$user->nickname} 您好,您正在修改 " . env('APP_NAME') . " 的邮箱,验证码如下。请在30分钟内输入验证码

$code

如果不是本人操作,您的账号可能存在风险,请及时修改密码!

"; }else{ $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($email) ->subject($subject) ->html($content)) ->send(); } catch (\Throwable $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()); } } } }