2.2 KiB
2.2 KiB
mail.tm Disposable Email API
Бесплатный disposable email API. Не требует регистрации, токен через JWT.
API Base
https://api.mail.tm
Create Account
import urllib.request, json, time
# Генерация уникального адреса
addr = f"user{int(time.time()) % 100000000}@emalupe.com"
req = urllib.request.Request(
'https://api.mail.tm/accounts',
data=json.dumps({'address': addr, 'password': 'StrongPass123!'}).encode(),
headers={'Content-Type': 'application/json'}
)
resp = urllib.request.urlopen(req)
data = json.loads(resp.read())
# → {"id": "...", "address": "user12345678@emalupe.com", ...}
Get Token (JWT)
req = urllib.request.Request(
'https://api.mail.tm/token',
data=json.dumps({'address': addr, 'password': 'StrongPass123!'}).encode(),
headers={'Content-Type': 'application/json'}
)
resp = urllib.request.urlopen(req)
data = json.loads(resp.read())
token = data['token'] # JWT for Bearer auth
Check Inbox
req = urllib.request.Request(
'https://api.mail.tm/messages',
headers={'Authorization': f'Bearer {token}'}
)
resp = urllib.request.urlopen(req)
data = json.loads(resp.read())
# → {"hydra:member": [{"id": "...", "subject": "...", ...}]}
Read Message
req = urllib.request.Request(
f'https://api.mail.tm/messages/{msg_id}',
headers={'Authorization': f'Bearer {token}'}
)
resp = urllib.request.urlopen(req)
data = json.loads(resp.read())
# → {"html": ["<html>..."], "text": "..."}
Pitfalls
- Домен
@emalupe.com: не блокируется большинством сервисов (в отличие от@mail.tm,@guerrillamail.com) - Токен короткоживущий: получай свежий токен перед каждым использованием
- Rate limit: ~3-5 запросов подряд, потом пауза
- Не все сервисы принимают: ClickUp, Stagewise, некоторые AI-платформы блокируют disposable домены
- Для массовой регистрации: лучше Gmail+aliases, catch-all домены, или temp.coda.ink