Гайд Для разработчиков API

Временная почта для тестирования: гайд для разработчиков и QA

Тестировать email-флоу на реальные адреса коллег – плохая практика. Временная почта решает эту проблему элегантно: изолированные адреса, никакого мусора в реальных ящиках, возможность автоматизации через API.
Разбираем правильный подход с конкретными инструментами.

Зачем разработчикам нужна временная почта

Регистрационные формы, письма подтверждения, сброс пароля, транзакционные уведомления – весь этот email-флоу нужно тестировать. Если делать это на реальных адресах, получится загрязнённая тестовыми письмами личная почта и хаос в базе данных.

Временная почта даёт чистое изолированное окружение: создал адрес, протестировал, выбросил.
Никакого следа в продакшн-системах, никакого спама коллегам.

Лучшие инструменты для тестирования с API

Mail.tm – лучший выбор для автоматизации

Mail.tm предоставляет открытый REST API. Создание аккаунта, получение токена, чтение писем – всё через стандартные HTTP-запросы.
Никаких платных планов для базового использования.

Создать аккаунт Mail.tm (Python)
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. Перейти по ссылке – регистрация завершена

Polling входящих Mail.tm (Python)
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 – для локальной разработки.