userid)->where('created_at', '>', Carbon::now()->subMinutes(1440))->first(); if ($res) return; //删除 self::where('userid', $user->userid)->delete(); $info['created_at'] = date("Y-m-d H:i:s"); $info['userid'] = $user->userid; $info['email'] = $user->email; $info['code'] = md5(uniqid(md5(microtime(true)), true)) . md5($user->userid . md5('lddsgagsgkdiid' . microtime(true))); $info['status'] = 0; $userEmailVerification = self::createInstance($info); $userEmailVerification->save(); $url = Base::fillUrl('single/valid/email') . '?code=' . $info['code']; try { // 15秒后超时 self::initMailConfig(); Mail::send('email', ['url' => $url], function ($m) use ($user) { $m->from(Config::get("mail.mailers.smtp.username"), env('APP_NAME')); $m->to($user->email); $m->subject("绑定邮箱验证"); }); } catch (Exception $exception) { // 一般是请求超时 if (str_contains($exception->getMessage(), "Timed Out")) { throw new ApiException("language.TimedOut"); } elseif ($exception->getCode() == 550) { throw new ApiException('邮件内容被拒绝,请检查邮箱是否开启接收功能'); } else { throw new ApiException($exception->getMessage()); } } } /** * 初始化邮箱配置 * @return void */ public static function initMailConfig() { $config = Base::setting('emailSetting'); Config::set("mail.mailers.smtp.host", $config['smtp_server'] ?: Config::get("mail.mailers.smtp.host")); Config::set("mail.mailers.smtp.port", $config['port'] ?: Config::get("mail.mailers.smtp.port")); Config::set("mail.mailers.smtp.username", $config['account'] ?: Config::get("mail.mailers.smtp.username")); Config::set("mail.mailers.smtp.password", $config['password'] ?: Config::get("mail.mailers.smtp.password")); Config::set("mail.mailers.smtp.encryption", 'ssl'); } }