| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import time
- import re
- from config import Config
- import requests
- class EmailVerificationHandler:
- def __init__(self):
- self.username = Config().get_temp_mail()
- self.session = requests.Session()
- self.emailExtension = "@mailto.plus"
- def get_verification_code(self):
- code = None
- try:
- print("正在处理...")
- # 等待并获取最新邮件
- code, first_id = self._get_latest_mail_code()
- # 清理邮件
- self._cleanup_mail(first_id)
- except Exception as e:
- print(f"获取验证码失败: {str(e)}")
- return code
- # 手动输入验证码
- def _get_latest_mail_code(self):
- # 获取邮件列表
- mail_list_url = f"https://tempmail.plus/api/mails?email={self.username}{self.emailExtension}&limit=20&epin="
- mail_list_response = self.session.get(mail_list_url)
- mail_list_data = mail_list_response.json()
- time.sleep(0.5)
- if not mail_list_data.get("result"):
- return None, None
- # 获取最新邮件的ID
- first_id = mail_list_data.get("first_id")
- if not first_id:
- return None, None
- # 获取具体邮件内容
- mail_detail_url = f"https://tempmail.plus/api/mails/{first_id}?email={self.username}{self.emailExtension}&epin="
- mail_detail_response = self.session.get(mail_detail_url)
- mail_detail_data = mail_detail_response.json()
- time.sleep(0.5)
- if not mail_detail_data.get("result"):
- return None, None
- # 从邮件文本中提取6位数字验证码
- mail_text = mail_detail_data.get("text", "")
- code_match = re.search(r"\b\d{6}\b", mail_text)
- if code_match:
- return code_match.group(), first_id
- return None, None
- def _cleanup_mail(self, first_id):
- # 构造删除请求的URL和数据
- delete_url = "https://tempmail.plus/api/mails/"
- payload = {
- "email": f"{self.username}{self.emailExtension}",
- "first_id": first_id,
- "epin": "",
- }
- # 最多尝试5次
- for _ in range(5):
- response = self.session.delete(delete_url, data=payload)
- try:
- result = response.json().get("result")
- if result is True:
- return True
- except:
- pass
- # 如果失败,等待0.5秒后重试
- time.sleep(0.5)
- return False
- if __name__ == "__main__":
- email_handler = EmailVerificationHandler()
- code = email_handler.get_verification_code()
- print(code)
|