Временная почта
на cURL.
Одноразовые почтовые ящики и перехват OTP прямо из терминала с помощью curl + jq.
#!/usr/bin/env bash
# Create a disposable inbox (TTL 30 min) and print the address.
# Requires: curl, jq, and EVILMAIL_KEY in your environment.
curl -s -X POST https://evilmail.pro/api/temp-email \
-H "X-API-Key: $EVILMAIL_KEY" \
-H "Content-Type: application/json" \
-d '{"ttlMinutes": 30}' \
| jq -r '.data.email'Интеграция временной почты через cURL в ваш рабочий процесс позволяет мгновенно создать одноразовый ящик, дождаться письма для верификации и получить код подтверждения, не выходя из терминала. EvilMail — это API временной почты для разработчиков: три простых HTTP-эндпоинта, без SDK, без браузера, без регистрации аккаунта под каждый тест. Направьте на него curl из CI-пайплайна, из bash-набора тестов или из быстрого разового скрипта — и вы получите настоящий почтовый ящик, который по запросу принимает OTP-коды, magic-ссылки и приветственные письма. Идеально для сквозной проверки сценариев регистрации и подтверждения email.
Зачем использовать временную почту на cURL
Автоматическая проверка email в CI
Создайте свежий ящик прямо в пайплайне, запустите регистрацию и опрашивайте сервер в ожидании письма с подтверждением — всё в одном bash-шаге. Никакого общего тестового ящика и нестабильных ручных проверок.
Тестирование входа по OTP и 2FA
Получайте одноразовые коды одним вызовом curl и regex, а затем сразу подставляйте их в сценарий входа. Идеально для сквозных тестов, которые должны пройти реальную проверку по email.
Одноразовые адреса для скриптов
Нужен рабочий ящик для вебхука, пробной регистрации или smoke-теста? Создайте его на лету одним POST-запросом и выбросьте, когда истечёт TTL.
Отладка транзакционных писем
Захватывайте сырой текст и HTML того, что действительно отправляет ваше приложение, и проверяйте темы, ссылки и тела писем прямо из командной строки, чтобы быстро ловить ошибки шаблонов и доставки.
Процесс — временная почта cURL за 3 вызова
Создайте одноразовый ящик
#!/usr/bin/env bash
set -euo pipefail
# Create a 30-minute disposable inbox in one POST.
resp=$(curl -s -X POST https://evilmail.pro/api/temp-email \
-H "X-API-Key: $EVILMAIL_KEY" \
-H "Content-Type: application/json" \
-d '{"ttlMinutes": 30}')
# Pull the address and session token out of the response.
EMAIL=$(echo "$resp" | jq -r '.data.email')
TOKEN=$(echo "$resp" | jq -r '.data.sessionToken')
echo "Inbox: $EMAIL"
echo "Token: $TOKEN"Опрашивайте сервер, пока не придёт письмо
#!/usr/bin/env bash
set -euo pipefail
# Poll the inbox up to 20 times, 3s apart, until mail lands.
# (Note: don't use $UID — it's a read-only bash variable.)
MSG_UID=""
for i in $(seq 1 20); do
msgs=$(curl -s "https://evilmail.pro/api/temp-email/$TOKEN" \
-H "X-API-Key: $EVILMAIL_KEY")
MSG_UID=$(echo "$msgs" | jq -r '.data.messages[0].uid // empty')
if [ -n "$MSG_UID" ]; then
echo "Message arrived (uid=$MSG_UID)"
break
fi
echo "Attempt $i: nothing yet, retrying in 3s..."
sleep 3
done
if [ -z "$MSG_UID" ]; then
echo "Timed out waiting for mail" >&2
exit 1
fiПрочитайте сообщение и извлеките код
#!/usr/bin/env bash
set -euo pipefail
# Fetch the full message body by uid.
body=$(curl -s \
"https://evilmail.pro/api/message/$MSG_UID?token=$TOKEN" \
-H "X-API-Key: $EVILMAIL_KEY")
TEXT=$(echo "$body" | jq -r '.data.text')
# Grab the first standalone 6-digit code from the body.
CODE=$(echo "$TEXT" | grep -oE '\b[0-9]{6}\b' | head -n1)
echo "OTP: $CODE"Временная почта cURL — FAQ
Q1Как получить адрес временной почты через cURL?−
Отправьте POST-запрос на https://evilmail.pro/api/temp-email с заголовком X-API-Key и JSON-телом вида {"ttlMinutes": 30}. В ответе будут data.email (адрес) и data.sessionToken, который используется для всех последующих вызовов. Пропустите ответ через jq, чтобы прочитать нужные поля.
Q2Можно ли использовать это для автоматического тестирования?+
Да — это основной сценарий. Поскольку всё работает через обычный HTTP, вы можете создавать ящики, опрашивать сообщения и извлекать коды из любого CI-раннера или bash-скрипта. Создавайте свежий ящик под каждый прогон тестов, чтобы изолировать запуски и избежать взаимного влияния между кейсами.
Q3Как извлечь OTP?+
Получите сообщение через GET /api/message/{uid}?token={sessionToken}, прочитайте data.text (или data.html) с помощью jq, а затем примените к нему regex. Для стандартного 6-значного кода grep -oE '\b[0-9]{6}\b' | head -n1 вернёт первое совпадение. Скорректируйте шаблон для ссылок или других форматов кода.
Q4Нужен ли API-ключ и есть ли ограничения по частоте запросов?+
Да, каждый запрос должен содержать заголовок X-API-Key — читайте его из переменной окружения, например EVILMAIL_KEY, и никогда не прописывайте в коде. Запросы ограничены по частоте для каждого ключа, поэтому добавляйте короткую паузу между опросами (в примерах используется 3 секунды), а не долбите эндпоинт в плотном цикле.
Q5Сколько живёт ящик?+
Вы управляете этим через значение ttlMinutes, которое передаёте при создании — в этих примерах 30 минут. Как только TTL истекает, адрес и его сообщения автоматически удаляются, так что убирать за собой ничего не нужно. Запросите больший TTL, если вашему сценарию требуется больше времени на доставку.
Временная почта на других языках
Один API-ключ. Одноразовые ящики в масштабе.
Создавайте неограниченное число одноразовых адресов, опрашивайте их по HTTP и получайте коды подтверждения прямо в тесты и CI. Бесплатно на старте; собственные домены и повышенные лимиты на платных тарифах.

