--- name: email-verification description: 邮箱验证码获取服务 - 支持临时邮箱API获取验证码、验证链接和完整邮件内容 domain: utilities version: 1.0.0 tags: [email, verification, code, outlook, temp-mail, api] triggers: keywords: primary: [邮箱验证码, 验证码获取, email code, verification code, 邮件验证] secondary: [临时邮箱, temp mail, outlook验证码, email verification, 获取验证码] context_boost: [注册, register, 验证, verify, 邮箱, email] priority: high --- # Email Verification Service 临时邮箱验证码获取服务,用于自动化注册流程中获取邮箱验证码。 ## API 配置 ``` Base URL: https://one.hao.work/api/mail API Key: 2b358a68a8de4403b29949bf7b3a46f0 ``` ## 认证方式 所有请求需要在 Header 中添加: ```bash -H "Authorization: Bearer 2b358a68a8de4403b29949bf7b3a46f0" ``` --- ## API 端点 ### 1. 获取可用邮箱账户列表 ```bash curl -X GET \ 'https://one.hao.work/api/mail/accounts' \ -H 'accept: application/json' \ -H 'Authorization: Bearer 2b358a68a8de4403b29949bf7b3a46f0' ``` **响应示例:** ```json { "data": [ { "id": 465, "email": "tertia1948tasha315ne@outlook.com", "password": "Kyle4714", "status": 1, "statusText": "登录成功(IMAP)", "lastCheck": "2026-03-02T07:39:14Z", "lastFrom": "Binance ", "loginOk": true } ] } ``` **字段说明:** | 字段 | 类型 | 说明 | |------|------|------| | id | integer | 账户ID | | email | string | 邮箱地址 | | password | string | 邮箱密码 | | status | integer | 状态码 (1=正常) | | statusText | string | 状态描述 | | lastCheck | string | 最后检查时间 | | lastFrom | string | 最后收到邮件的发件人 | | loginOk | boolean | 登录是否成功 | --- ### 2. 获取最新邮件(推荐) 一站式获取最新邮件,包含验证码、链接和完整内容。 ```bash curl -X POST \ 'https://one.hao.work/api/mail/all-in-one' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer 2b358a68a8de4403b29949bf7b3a46f0' \ -d '{ "email": "faye1989arlene1029@outlook.com", "useApiOnly": true, "timeoutSeconds": 180, "recentWithinMinutes": 10 }' ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | email | string | 是 | 邮箱地址 | | useApiOnly | boolean | 否 | 是否仅使用API获取,默认 true | | timeoutSeconds | integer | 否 | 超时时间(秒),默认 180 | | recentWithinMinutes | integer | 否 | 只获取最近 N 分钟内的邮件,避免误判旧邮件 | **响应示例:** ```json { "success": true, "email": "faye1989arlene1029@outlook.com", "message": { "from": "noreply@binance.com", "to": "faye1989arlene1029@outlook.com", "subject": "Binance 验证码", "date": "2026-03-02T01:30:00Z", "text": "您的验证码是:123456。有效期10分钟。", "html": "您的验证码是:123456。有效期10分钟。", "verification": { "code": "123456", "link": "https://www.binance.com/verify?token=abc123xyz", "type": "registration" } }, "timestamp": 1772441437665 } ``` --- ## 使用流程 ### 标准流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 邮箱验证码获取流程 │ │ │ │ ┌─────────────┐ │ │ │ 准备邮箱地址 │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 发送验证请求 │ POST /api/mail/all-in-one │ │ │ (注册/登录) │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 等待邮件到达 │ timeoutSeconds: 180 │ │ │ (最长3分钟) │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 获取邮件内容 │ text + html + 验证码 + 链接 │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 提取验证码 │ 自动识别 4-8 位数字验证码 │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 完成验证 │ 填入验证码或点击链接 │ │ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 自动化脚本示例 ### Python 示例 ```python import requests import time import re class EmailVerificationService: def __init__(self, api_key="2b358a68a8de4403b29949bf7b3a46f0"): self.base_url = "https://one.hao.work/api/mail" self.headers = { "accept": "application/json", "Content-Type": "application/json", "Authorization": f"Bearer {api_key}" } def get_accounts(self): """获取可用邮箱账户列表""" response = requests.get( f"{self.base_url}/accounts", headers=self.headers ) return response.json() def get_latest_email(self, email, timeout=180, recent_minutes=None): """获取最新邮件""" payload = { "email": email, "useApiOnly": True, "timeoutSeconds": timeout } if recent_minutes: payload["recentWithinMinutes"] = recent_minutes response = requests.post( f"{self.base_url}/all-in-one", headers=self.headers, json=payload ) return response.json() def extract_verification_code(self, email_content): """从邮件内容中提取验证码""" # 常见验证码模式 patterns = [ r'验证码[是为::\s]*(\d{4,8})', r'verification code[是为::\s]*(\d{4,8})', r'code[是为::\s]*(\d{4,8})', r'\b(\d{6})\b', # 6位数字 r'\b(\d{4})\b', # 4位数字 ] text = email_content.get('text', '') or email_content.get('html', '') for pattern in patterns: match = re.search(pattern, text, re.IGNORECASE) if match: return match.group(1) return None def wait_for_verification_code(self, email, timeout=180, interval=5, recent_minutes=10): """等待并获取验证码""" start_time = time.time() while time.time() - start_time < timeout: result = self.get_latest_email(email, timeout=interval, recent_minutes=recent_minutes) if result.get('success') and result.get('message'): message = result['message'] # 优先使用自动识别的验证码 if message.get('verification', {}).get('code'): return { 'code': message['verification']['code'], 'link': message['verification'].get('link'), 'full_message': message } # 手动提取验证码 code = self.extract_verification_code(message) if code: return { 'code': code, 'link': message.get('verification', {}).get('link'), 'full_message': message } time.sleep(interval) return None # 使用示例 if __name__ == "__main__": service = EmailVerificationService() # 获取验证码 result = service.wait_for_verification_code( "faye1989arlene1029@outlook.com", timeout=180 ) if result: print(f"验证码: {result['code']}") print(f"验证链接: {result['link']}") print(f"完整邮件: {result['full_message']}") ``` ### Bash/cURL 示例 ```bash #!/bin/bash API_KEY="2b358a68a8de4403b29949bf7b3a46f0" BASE_URL="https://one.hao.work/api/mail" # 获取验证码 get_verification_code() { local email=$1 local timeout=${2:-180} curl -X POST \ "${BASE_URL}/all-in-one" \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H "X-API-Key: ${API_KEY}" \ -d "{ \"email\": \"${email}\", \"useApiOnly\": true, \"timeoutSeconds\": ${timeout} }" } # 使用示例 get_verification_code "faye1989arlene1029@outlook.com" 180 ``` --- ## 验证码提取规则 ### 常见验证码格式 | 格式 | 示例 | 正则表达式 | |------|------|-----------| | 4位数字 | 1234 | `\b(\d{4})\b` | | 6位数字 | 123456 | `\b(\d{6})\b` | | 带前缀 | 验证码:123456 | `验证码[是为::\s]*(\d{4,8})` | | 英文前缀 | Code: 123456 | `code[是为::\s]*(\d{4,8})` | ### 支持的邮件类型 - Outlook.com - Hotmail.com - Gmail (需要配置) - 自定义域名邮箱 --- ## 应用场景 ### 1. 自动化注册流程 ```python # 1. 填写注册表单 fill_registration_form(email, password) # 2. 提交注册 submit_registration() # 3. 等待并获取验证码 service = EmailVerificationService() result = service.wait_for_verification_code(email) # 4. 填入验证码 fill_verification_code(result['code']) # 5. 完成注册 complete_registration() ``` ### 2. 批量账号注册 ```python accounts = [ "user1@outlook.com", "user2@outlook.com", "user3@outlook.com" ] service = EmailVerificationService() for email in accounts: # 注册账号 register_account(email) # 获取验证码 result = service.wait_for_verification_code(email) if result: verify_account(email, result['code']) print(f"✓ {email} 注册成功") else: print(f"✗ {email} 获取验证码失败") ``` ### 3. 验证链接提取 ```python result = service.wait_for_verification_code(email) if result and result.get('link'): # 方式1: 直接访问链接 requests.get(result['link']) # 方式2: 提取链接中的token import urllib.parse parsed = urllib.parse.urlparse(result['link']) token = urllib.parse.parse_qs(parsed.query).get('token', [None])[0] ``` --- ## 错误处理 ### 常见错误码 | 状态码 | 说明 | 解决方案 | |--------|------|---------| | 401 | API Key 无效 | 检查 X-API-Key header | | 404 | 邮箱不存在 | 确认邮箱地址正确 | | 408 | 获取超时 | 增加 timeoutSeconds | | 429 | 请求过于频繁 | 降低请求频率 | | 500 | 服务器错误 | 稍后重试 | ### 重试机制 ```python def get_code_with_retry(email, max_retries=3): service = EmailVerificationService() for attempt in range(max_retries): try: result = service.wait_for_verification_code(email) if result: return result except Exception as e: print(f"尝试 {attempt + 1} 失败: {e}") time.sleep(5) return None ``` --- ## 注意事项 1. **超时设置** - 默认 180 秒,根据邮件到达时间调整 2. **请求频率** - 避免过于频繁的请求,建议间隔 5 秒以上 3. **验证码有效期** - 通常 10-15 分钟,尽快使用 4. **邮件延迟** - 某些服务邮件可能有延迟,适当增加超时 5. **并发限制** - 同一邮箱同时只能有一个等待请求 --- ## 与其他 Skill 集成 ### 配合 Binance 注册 ```python # 在 Binance 注册流程中使用 from binance_registration import BinanceRegistration from email_verification import EmailVerificationService binance = BinanceRegistration() email_service = EmailVerificationService() # 1. 发送注册请求 email = "user@outlook.com" binance.request_verification_code(email) # 2. 获取验证码 result = email_service.wait_for_verification_code(email) code = result['code'] # 3. 完成注册 binance.complete_registration(email, password, code) ``` --- ## API 响应字段说明 ### 完整响应结构 ```json { "success": true, "email": "user@outlook.com", "message": { "from": "sender@example.com", "to": "user@outlook.com", "subject": "邮件主题", "date": "2026-03-02T01:30:00Z", "text": "纯文本内容", "html": "HTML内容", "verification": { "code": "123456", "link": "https://example.com/verify?token=xxx", "type": "registration|login|reset_password" } }, "timestamp": 1772441437665 } ``` ### 字段说明 | 字段 | 类型 | 说明 | |------|------|------| | success | boolean | 请求是否成功 | | email | string | 邮箱地址 | | message.from | string | 发件人地址 | | message.to | string | 收件人地址 | | message.subject | string | 邮件主题 | | message.date | string | 邮件日期时间 (ISO 8601) | | message.text | string | 纯文本内容 | | message.html | string | HTML 内容 | | message.verification.code | string | 自动识别的验证码 | | message.verification.link | string | 验证链接 | | message.verification.type | string | 验证类型 | | timestamp | integer | 响应时间戳 (毫秒) |