Временная почта
на Python.
Одноразовые почтовые ящики для Python — тремя строчками на requests.
import os
import requests
API = "https://evilmail.pro"
headers = {"X-API-Key": os.environ["EVILMAIL_KEY"]}
# Create a disposable inbox that lives for 30 minutes
resp = requests.post(
f"{API}/api/temp-email",
headers={**headers, "Content-Type": "application/json"},
json={"ttlMinutes": 30},
timeout=15,
)
resp.raise_for_status()
data = resp.json()["data"]
print("Inbox:", data["email"])
print("Token:", data["sessionToken"])Создавайте временную почту в Python всякий раз, когда вашим тестам, задачам CI или скриптам нужен одноразовый ящик — без SMTP-сервера и ручных кликов. EvilMail даёт простой HTTP API, который можно вызывать через библиотеку requests, чтобы создать одноразовый адрес, опрашивать его на предмет входящих писем и извлекать ссылку для регистрации или 6-значный OTP. Он создан для разработчиков, автоматизирующих тестирование проверки email: зарегистрируйте фейкового пользователя, дождитесь письма с подтверждением, извлеките код и проверьте его — всё внутри одной функции Python, которая одинаково работает и локально, и в вашем пайплайне.
Зачем использовать временную почту на Python
Сквозные тесты регистрации
Регистрируйте новый аккаунт на реальный временный ящик, дождитесь приветственного письма или подтверждения и убедитесь, что весь процесс работает. Никакого общего командного ящика и ненадёжных ручных шагов.
Автоматизация OTP и 2FA
Запустите вход или сброс пароля, опросите ящик и вытащите 6-значный код прямо из тела письма с помощью regex, чтобы ваш набор тестов проходил проверку без участия человека.
Пайплайны CI
Читайте ключ API из переменной окружения и запускайте те же самые проверки email в GitHub Actions, GitLab CI или Jenkins, что и на вашем ноутбуке.
Парсинг и одноразовые регистрации
Генерируйте новый одноразовый адрес на каждый запуск, чтобы зарегистрироваться в сервисах, которые нужны лишь один раз, сохраняя ваш реальный ящик чистым и без ограничений по частоте.
Процесс — временная почта Python за 3 вызова
Создайте одноразовый ящик
import os
import requests
API = "https://evilmail.pro"
KEY = os.environ["EVILMAIL_KEY"]
def create_inbox(ttl_minutes=30):
"""Return (email, session_token) for a fresh inbox."""
resp = requests.post(
f"{API}/api/temp-email",
headers={
"X-API-Key": KEY,
"Content-Type": "application/json",
},
json={"ttlMinutes": ttl_minutes},
timeout=15,
)
resp.raise_for_status()
data = resp.json()["data"]
return data["email"], data["sessionToken"]
email, token = create_inbox()
print("Send mail to:", email)Опрашивайте, пока не придёт письмо
import time
import requests
def wait_for_message(token, attempts=20, delay=3):
"""Poll the inbox until at least one message shows up."""
for _ in range(attempts):
resp = requests.get(
f"{API}/api/temp-email/{token}",
headers={"X-API-Key": KEY},
timeout=15,
)
resp.raise_for_status()
messages = resp.json()["data"]["messages"]
if messages:
return messages[0] # newest message
time.sleep(delay)
raise TimeoutError("No email arrived in time")
msg = wait_for_message(token)
print("Got:", msg["subject"], "from", msg["from"])Прочитайте письмо и извлеките код
import re
import requests
def read_message(uid, token):
resp = requests.get(
f"{API}/api/message/{uid}",
headers={"X-API-Key": KEY},
params={"token": token},
timeout=15,
)
resp.raise_for_status()
return resp.json()["data"]
def extract_otp(text):
match = re.search(r"\b(\d{6})\b", text or "")
return match.group(1) if match else None
body = read_message(msg["uid"], token)
otp = extract_otp(body["text"])
print("OTP:", otp)Временная почта Python — FAQ
Q1Как получить адрес временной почты в Python?−
Отправьте POST-запрос на https://evilmail.pro/api/temp-email с заголовком X-API-Key и JSON-телом вида {"ttlMinutes": 30}. В ответе будут data.email (одноразовый адрес) и data.sessionToken, который вы используете для всех последующих вызовов. Сниппет из hero-блока выше делает именно это примерно в дюжину строк с помощью библиотеки requests.
Q2Можно ли использовать это для автоматизированного тестирования?+
Да — это основной сценарий использования. Читайте ключ из переменной окружения, создавайте ящик в тестовой фикстуре, инициируйте тестируемое письмо, затем опрашивайте ящик и проверяйте тему, тело или извлечённый код. Это работает одинаково на вашей машине и в CI (GitHub Actions, GitLab, Jenkins), поэтому зависящие от email процессы перестают быть ненадёжными ручными шагами.
Q3Как извлечь OTP?+
Получите письмо через GET /api/message/{uid}?token={sessionToken} и примените regex к data.text (или data.html). Стандартный 6-значный одноразовый код соответствует шаблону \b(\d{6})\b. Сниппет из шага 3 показывает полную вспомогательную функцию чтения и извлечения, возвращающую код в виде строки.
Q4Нужен ли ключ API и есть ли ограничения по частоте запросов?+
Каждый запрос требует заголовок X-API-Key, поэтому вам понадобится ключ из панели управления EvilMail — храните его в переменной окружения (EVILMAIL_KEY), никогда не в коде. К каждому ключу применяются разумные ограничения по частоте для защиты от злоупотреблений; при опросе интервал в 3 секунды из примеров с запасом укладывается в них. Точные квоты смотрите в вашем тарифе.
Q5Сколько живёт ящик?+
Вы управляете этим через значение ttlMinutes, которое передаёте при создании ящика (30 минут в примерах). Как только TTL истекает, адрес и его письма удаляются, поэтому создавайте новый ящик на каждый тестовый запуск или задачу, а не переиспользуйте один долгое время.
Временная почта на других языках
Один API-ключ. Одноразовые ящики в масштабе.
Создавайте неограниченное число одноразовых адресов, опрашивайте их по HTTP и получайте коды подтверждения прямо в тесты и CI. Бесплатно на старте; собственные домены и повышенные лимиты на платных тарифах.

