Временная почта для тестирования: гайд для разработчиков и QA
Тестировать email-флоу на реальные адреса коллег – плохая практика. Временная почта решает эту проблему элегантно: изолированные адреса, никакого мусора в реальных ящиках, возможность автоматизации через API.
Разбираем правильный подход с конкретными инструментами.
Зачем разработчикам нужна временная почта
Регистрационные формы, письма подтверждения, сброс пароля, транзакционные уведомления – весь этот email-флоу нужно тестировать. Если делать это на реальных адресах, получится загрязнённая тестовыми письмами личная почта и хаос в базе данных.
Временная почта даёт чистое изолированное окружение: создал адрес, протестировал, выбросил.
Никакого следа в продакшн-системах, никакого спама коллегам.
Лучшие инструменты для тестирования с API
Mail.tm – лучший выбор для автоматизации
Mail.tm предоставляет открытый REST API. Создание аккаунта, получение токена, чтение писем – всё через стандартные HTTP-запросы.
Никаких платных планов для базового использования.
import requests
import json
# Получить список доступных доменов
domains = requests.get('https://api.mail.tm/domains').json()
domain = domains['hydra:member'][0]['domain']
# Создать аккаунт
payload = {
"address": f"testuser@{domain}",
"password": "TestPass123!"
}
account = requests.post(
'https://api.mail.tm/accounts',
json=payload
).json()
# Получить токен авторизации
token_resp = requests.post(
'https://api.mail.tm/token',
json={"address": payload["address"], "password": payload["password"]}
).json()
token = token_resp['token']
# Читать входящие
headers = {"Authorization": f"Bearer {token}"}
messages = requests.get('https://api.mail.tm/messages', headers=headers).json()
print(messages)
Guerrilla Mail – для ручного тестирования
Guerrilla Mail тоже имеет API, но больше подходит для ручного тестирования. Зашёл на сайт, создал адрес, проверил письмо глазами. Плюс поддерживает отправку писем – редкость для бесплатных сервисов.
YOPmail – для предсказуемых адресов
YOPmail позволяет создать предсказуемый адрес: test-feature-123@yopmail.com. Это удобно для именования тестовых кейсов: адрес соответствует тест-кейсу, всё структурировано. Хранение 8 дней – достаточно для большинства тестовых циклов.
Паттерны использования в тестировании
Тест регистрации и подтверждения
Классический сценарий:
1. Создать временный адрес через API
2. Зарегистрироваться на тестируемом сайте с этим адресом
3. Дождаться письма подтверждения через polling API
4. Извлечь ссылку подтверждения из тела письма
5. Перейти по ссылке – регистрация завершена
import time
import re
def wait_for_confirmation_link(token, timeout=60):
headers = {"Authorization": f"Bearer {token}"}
start = time.time()
while time.time() - start < timeout:
messages = requests.get(
'https://api.mail.tm/messages',
headers=headers
).json()
if messages.get('hydra:member'):
msg_id = messages['hydra:member'][0]['id']
msg = requests.get(
f'https://api.mail.tm/messages/{msg_id}',
headers=headers
).json()
# Ищем ссылку подтверждения
links = re.findall(r'https?://[^\s"]+confirm[^\s"]+', msg['text'])
if links:
return links[0]
time.sleep(3)
raise TimeoutError("Письмо не пришло за отведённое время")
Тест reset password флоу
Аналогичный подход: создать аккаунт, запустить процедуру сброса пароля, поймать письмо через API, извлечь токен, выполнить сброс. Полный end-to-end тест без ручных шагов.
Предостережения для тестировщиков
- Не тестируйте на prod-домене сервиса временной почты с нагрузкой – вас заблокируют
- Учитывайте, что письма могут задерживаться на 5-30 секунд в зависимости от нагрузки сервиса
Для CI/CD лучше использовать специализированные инструменты вроде Mailhog или Mailtrap- API Mail.tm имеет rate limits – не делайте тысячи запросов в минуту
FAQ для разработчиков
Mail.tm – лучший выбор: чистый REST API, хорошая документация, несколько доменов. Guerrilla Mail – второй вариант. Для серьёзной CI/CD инфраструктуры рассмотрите Mailhog (self-hosted).
Да. Mail.tm предоставляет бесплатный публичный REST API без регистрации. Guerrilla Mail также имеет открытый API. Оба подходят для небольших объёмов тестирования.
Mailhog и Mailtrap – это инструменты для перехвата писем в dev-среде: они не отправляют письма в интернет. Временная почта – это реальный внешний ящик. Используйте временную почту для тестирования внешних интеграций, Mailhog – для локальной разработки.