MCPcopy Create free account
hub / github.com/Tron521/codex-console-temp / get_verification_code

Method get_verification_code

src/services/temp_mail.py:678–846  ·  view source on GitHub ↗

从 TempMail 邮箱获取验证码 Args: email: 邮箱地址 email_id: 未使用,保留接口兼容 timeout: 超时时间(秒) pattern: 验证码正则 otp_sent_at: OTP 发送时间戳(用于过滤旧邮件) Returns: 验证码字符串,超时返回 None

(
        self,
        email: str,
        email_id: str = None,
        timeout: int = 120,
        pattern: str = OTP_CODE_PATTERN,
        otp_sent_at: Optional[float] = None,
    )

Source from the content-addressed store, hash-verified

676 raise EmailServiceError(f"创建邮箱失败: {e}")
677
678 def get_verification_code(
679 self,
680 email: str,
681 email_id: str = None,
682 timeout: int = 120,
683 pattern: str = OTP_CODE_PATTERN,
684 otp_sent_at: Optional[float] = None,
685 ) -> Optional[str]:
686 """
687 从 TempMail 邮箱获取验证码
688
689 Args:
690 email: 邮箱地址
691 email_id: 未使用,保留接口兼容
692 timeout: 超时时间(秒)
693 pattern: 验证码正则
694 otp_sent_at: OTP 发送时间戳(用于过滤旧邮件)
695
696 Returns:
697 验证码字符串,超时返回 None
698 """
699 logger.info(f"正在从 TempMail 邮箱 {email} 获取验证码...")
700
701 start_time = time.time()
702 seen_mail_ids: set = set()
703 last_used_mail_id = self._last_used_mail_ids.get(email)
704 unknown_ts_grace_seconds = 15
705
706 # 优先使用用户级 JWT,回退到 admin API
707 cached = self._email_cache.get(email, {})
708 jwt = cached.get("jwt")
709 address_id = (
710 str(cached.get("address_id") or "").strip()
711 or str(email_id or "").strip()
712 or None
713 )
714 poll_count = 0
715
716 while time.time() - start_time < timeout:
717 poll_count += 1
718 try:
719 mails = self._fetch_mails_once(email=email, jwt=jwt, email_id=address_id)
720 if not mails:
721 if poll_count == 1 or poll_count % 5 == 0:
722 logger.info(
723 f"TempMail 轮询[{email}] 第 {poll_count} 次: 暂无邮件(已等待 {int(time.time() - start_time)}s)"
724 )
725 time.sleep(3)
726 continue
727
728 if poll_count == 1 or poll_count % 3 == 0:
729 logger.info(
730 f"TempMail 轮询[{email}] 第 {poll_count} 次: 收到 {len(mails)} 封候选邮件"
731 )
732
733 candidates: List[Dict[str, Any]] = []
734 unknown_ts_candidates: List[Dict[str, Any]] = []
735

Calls 13

_fetch_mails_onceMethod · 0.95
_extract_mail_idMethod · 0.95
_extract_mail_fieldsMethod · 0.95
_is_openai_otp_mailMethod · 0.95
_extract_otp_codeMethod · 0.95
_fetch_mail_detailMethod · 0.95
setFunction · 0.85
infoMethod · 0.80
sleepMethod · 0.80
warningMethod · 0.80
getMethod · 0.45