Files
at-digitaltwin/utils/mailTmApi.ts
2026-01-26 17:50:18 +03:00

75 lines
2.0 KiB
TypeScript

// utils/mailTmApi.ts
import axios from 'axios';
const MAIL_TM_BASE = 'https://api.mail.tm';
export async function createTempEmail() {
const timestamp = Date.now();
// Получаем доступный домен
const domainRes = await axios.get(`${MAIL_TM_BASE}/domains`);
const domain = domainRes.data['hydra:member'][0].domain;
const email = `testuser${timestamp}@${domain}`;
const password = 'QwEr!1234567';
// Регистрируем
await axios.post(`${MAIL_TM_BASE}/accounts`, {
address: email,
password,
});
// Авторизуемся
const tokenRes = await axios.post(`${MAIL_TM_BASE}/token`, {
address: email,
password,
});
const token = tokenRes.data.token;
return { email, password, token };
}
export async function waitForConfirmationCode(token: string, timeout = 60000) {
const start = Date.now();
while (Date.now() - start < timeout) {
const res = await axios.get(`${MAIL_TM_BASE}/messages`, {
headers: { Authorization: `Bearer ${token}` },
});
const messages = res.data['hydra:member'];
// ✅ Логируем полученные письма
if (messages.length === 0) {
console.log('⏳ Письма пока не пришли...');
} else {
console.log(`📬 Получено ${messages.length} писем:`);
}
for (const message of messages) {
console.log('🔖 Тема письма:', message.subject);
const msg = await axios.get(`${MAIL_TM_BASE}/messages/${message.id}`, {
headers: { Authorization: `Bearer ${token}` },
});
const body = msg.data.text || msg.data.html;
console.log('📩 Тело письма:', body);
const match = body.match(/\b\d{6}\b/);
if (match) {
console.log('✅ Код подтверждения найден:', match[0]);
return match[0];
}
}
await new Promise(res => setTimeout(res, 2000)); // Пауза 2 сек
}
throw new Error('Код подтверждения не получен');
}