Тимчасова пошта
на Java.
Одноразові поштові скриньки в Java одним HTTP-запитом.
var http = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder()
.uri(URI.create("https://evilmail.pro/api/temp-email"))
.header("X-API-Key", System.getenv("EVILMAIL_KEY"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"ttlMinutes\":30}"))
.build();
var body = http.send(req, HttpResponse.BodyHandlers.ofString()).body();
// body -> {"data":{"email":"...","sessionToken":"..."}}
var email = body.replaceAll("(?s).*\"email\":\"([^\"]+)\".*", "$1");
System.out.println("Inbox: " + email);Раніше створення тимчасової поштової скриньки temp mail в Java означало парсинг веб-інтерфейсу або розгортання власного SMTP catch-all — з EvilMail це один HTTP-запит. Ця сторінка показує temp mail в Java, використовуючи виключно вбудований java.net.http.HttpClient: створіть одноразову скриньку, опитуйте її, доки не надійде лист для підтвердження, потім прочитайте повідомлення та витягніть OTP. Це саме те, що потрібно, щоб автоматизувати тестування підтвердження email у CI, повністю прогнати процеси реєстрації або протестувати коди скидання пароля, жодного разу не торкнувшись реальної поштової скриньки. Без SDK, без залежностей — лише temp mail API та звичайний HTTP, який можна вбудувати в будь-який набір тестів JUnit чи інтеграційних тестів.
Навіщо використовувати тимчасову пошту на Java
Наскрізні тести реєстрації
Створюйте свіжу одноразову скриньку для кожного тестового прогону, щоб процеси реєстрації ніколи не перетиналися. Переконайтеся, що вітальний лист або лист-підтвердження справді надходить, перш ніж рухатися далі.
OTP і коди підтвердження в CI
Опитуйте скриньку зі свого набору тестів JUnit чи інтеграційних тестів і витягуйте 6-значний код прямо з тіла листа за допомогою regex. Тестування підтвердження email у Java стає повністю автоматичним і відтворюваним.
QA скидання пароля
Запустіть скидання, отримайте тимчасовий email у Java та перейдіть за посиланням із токеном — валідуючи весь цикл без спільної командної скриньки, яка забивається тестовим шумом.
Тимчасові скриньки для скраперів і ботів
Коли робочому процесу потрібна одноразова адреса, створіть її за запитом із коротким TTL. Скринька автоматично закінчується, тож після неї нічого не треба прибирати.
Процес — тимчасова пошта Java за 3 виклики
Створити одноразову скриньку
import java.net.URI;
import java.net.http.*;
var http = HttpClient.newHttpClient();
var key = System.getenv("EVILMAIL_KEY"); // never hard-code
var create = HttpRequest.newBuilder()
.uri(URI.create("https://evilmail.pro/api/temp-email"))
.header("X-API-Key", key)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"ttlMinutes\":30}"))
.build();
var body = http.send(create,
HttpResponse.BodyHandlers.ofString()).body();
// {"data":{"email":"..","sessionToken":".."}}
var email = body.replaceAll("(?s).*\"email\":\"([^\"]+)\".*", "$1");
var token = body.replaceAll(
"(?s).*\"sessionToken\":\"([^\"]+)\".*", "$1");
System.out.println("Inbox " + email + " (token " + token + ")");
Опитувати, доки не надійде лист
import java.util.regex.Pattern;
// Poll up to 20 times, 3s apart, until a message lands.
int uid = -1;
for (int i = 0; i < 20 && uid < 0; i++) {
var poll = HttpRequest.newBuilder()
.uri(URI.create(
"https://evilmail.pro/api/temp-email/" + token))
.header("X-API-Key", key)
.build();
var body = http.send(poll,
HttpResponse.BodyHandlers.ofString()).body();
// messages[] carries a "uid" once mail arrives
var m = Pattern.compile("\"uid\":(\\d+)").matcher(body);
if (m.find()) { // first (newest) message
uid = Integer.parseInt(m.group(1));
break;
}
Thread.sleep(3000); // wait before the next attempt
}
if (uid < 0) throw new RuntimeException("No mail after ~60s");
System.out.println("Got message uid=" + uid);
Прочитати повідомлення і витягнути код
import java.util.regex.Pattern;
var read = HttpRequest.newBuilder()
.uri(URI.create("https://evilmail.pro/api/message/" + uid
+ "?token=" + token))
.header("X-API-Key", key)
.build();
var body = http.send(read,
HttpResponse.BodyHandlers.ofString()).body();
// data.text holds the plain-text body
var text = body.replaceAll(
"(?s).*\"text\":\"([^\"]*)\".*", "$1");
// A 6-digit OTP: \b(\d{6})\b
var otp = Pattern.compile("\\b(\\d{6})\\b").matcher(text);
if (otp.find()) System.out.println("Code: " + otp.group(1));
else System.out.println("No 6-digit code found");
Тимчасова пошта Java — FAQ
Q1Як отримати адресу temp mail у Java?−
Надішліть POST на https://evilmail.pro/api/temp-email із заголовком X-API-Key та JSON-тілом на кшталт {"ttlMinutes":30}. Відповідь повертає data.email (адресу) і data.sessionToken, який ви зберігаєте для опитування та читання повідомлень. Фрагмент коду вище робить саме це, використовуючи вбудований java.net.http.HttpClient — жодного зовнішнього SDK не потрібно.
Q2Чи можу я використовувати це для автоматизованого тестування?+
Так, це основний сценарій використання. Оскільки все працює на звичайному HTTP, ви можете створити скриньку на початку тесту JUnit чи інтеграційного тесту, запустити відправлення email у вашому застосунку, опитувати, доки лист не надійде, і перевіряти його вміст. Виділяйте кожному тестовому прогону власну скриньку, щоб паралельні прогони не ділили стан, і використовуйте короткий TTL, щоб між збірками нічого не лишалося.
Q3Як витягнути OTP?+
Отримайте повідомлення через GET /api/message/{uid}?token={sessionToken}, потім застосуйте regex до data.text (або data.html). Стандартний 6-значний код відповідає \b(\d{6})\b. Крок витягування вище компілює цей шаблон і виводить перший збіг — підставте власний шаблон для посилань чи кодів іншого формату.
Q4Чи потрібен API-ключ / чи є обмеження частоти запитів?+
Так, кожен запит має надсилати заголовок X-API-Key; зчитуйте його зі змінної середовища, наприклад EVILMAIL_KEY, а не прописуйте у коді. Запити обмежуються за частотою для кожного ключа, тож додавайте невелику паузу між опитуваннями (у прикладі очікування становить 3 секунди) замість того, щоб гатити ендпоінт у щільному циклі.
Q5Як довго живе скринька?+
Ви керуєте цим за допомогою поля ttlMinutes під час створення скриньки — 30 хвилин у цих прикладах. Щойно TTL спливає, адреса та її повідомлення закінчуються автоматично, тож одноразові скриньки самі прибирають за собою, і після тестового прогону нічого не треба демонтувати.
Тимчасова пошта іншими мовами
Один ключ API. Одноразові скриньки в масштабі.
Створюйте необмежену кількість тимчасових адрес, опитуйте їх через HTTP і витягуйте коди підтвердження прямо у ваші тести й CI. Безкоштовний старт; власні домени та вищі ліміти на платних тарифах.

