15 KiB
15 KiB
name, description, domain, version, tags, triggers
| name | description | domain | version | tags | triggers | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| email-verification | 邮箱验证码获取服务 - 支持临时邮箱API获取验证码、验证链接和完整邮件内容 | utilities | 1.0.0 |
|
|
Email Verification Service
临时邮箱验证码获取服务,用于自动化注册流程中获取邮箱验证码。
API 配置
Base URL: https://one.hao.work/api/mail
API Key: 2b358a68a8de4403b29949bf7b3a46f0
认证方式
所有请求需要在 Header 中添加:
-H "Authorization: Bearer 2b358a68a8de4403b29949bf7b3a46f0"
API 端点
1. 获取可用邮箱账户列表
curl -X GET \
'https://one.hao.work/api/mail/accounts' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 2b358a68a8de4403b29949bf7b3a46f0'
响应示例:
{
"data": [
{
"id": 465,
"email": "tertia1948tasha315ne@outlook.com",
"password": "Kyle4714",
"status": 1,
"statusText": "登录成功(IMAP)",
"lastCheck": "2026-03-02T07:39:14Z",
"lastFrom": "Binance <do_not_reply@mgdirectmail.binance.com>",
"loginOk": true
}
]
}
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | integer | 账户ID |
| string | 邮箱地址 | |
| password | string | 邮箱密码 |
| status | integer | 状态码 (1=正常) |
| statusText | string | 状态描述 |
| lastCheck | string | 最后检查时间 |
| lastFrom | string | 最后收到邮件的发件人 |
| loginOk | boolean | 登录是否成功 |
2. 获取最新邮件(推荐)
一站式获取最新邮件,包含验证码、链接和完整内容。
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
}'
参数说明:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 是 | 邮箱地址 | |
| useApiOnly | boolean | 否 | 是否仅使用API获取,默认 true |
| timeoutSeconds | integer | 否 | 超时时间(秒),默认 180 |
| recentWithinMinutes | integer | 否 | 只获取最近 N 分钟内的邮件,避免误判旧邮件 |
响应示例:
{
"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": "<html><body>您的验证码是:<b>123456</b>。有效期10分钟。</body></html>",
"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 示例
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 示例
#!/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. 自动化注册流程
# 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. 批量账号注册
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. 验证链接提取
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 | 服务器错误 | 稍后重试 |
重试机制
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
注意事项
- 超时设置 - 默认 180 秒,根据邮件到达时间调整
- 请求频率 - 避免过于频繁的请求,建议间隔 5 秒以上
- 验证码有效期 - 通常 10-15 分钟,尽快使用
- 邮件延迟 - 某些服务邮件可能有延迟,适当增加超时
- 并发限制 - 同一邮箱同时只能有一个等待请求
与其他 Skill 集成
配合 Binance 注册
# 在 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 响应字段说明
完整响应结构
{
"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 | 请求是否成功 |
| 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 | 响应时间戳 (毫秒) |