Если вы искали способ бороться с тем, что пользователи вашего продукта используют фейковые почты для регистрации и получения бонусов или просто хотели найти современный способ валидировать введённую пользователем почту, то это статья для вас. В ней я расскажу вам о том, как можно вывести валидацию email-адресов на совершенно новый уровень. В конце статьи вас будут ждать ссылки на полезные библиотеки. Погнали!Принцип работыДавайте начнём с того, как это работает. Две современные библиотеки для валидации email-адресов, о которых сегодня пойдёт речь, используют несколько методов:Проверка на регулярные выражения (Хотя сейчас этим никого не удивить)Проверка MX-записей доменаПроверка SMTP сервера.Мы остановимся на последних двух.Что такое MX записи?MX (Mail Exchange) записи являются частью DNS (Domain Name System) и указывают на почтовые серверы, отвечающие за приём электронной почты для домена. Проверка наличия MX записей позволяет убедиться, что домен действительно может принимать электронные письма.Как это работает:DNS-запрос отправляется к серверу доменных имён для получения MX записей.Если MX записи найдены, это означает, что домен настроен для приёма почты.К сожалению, проверка MX записей не всегда говорит о том, что почтовые ящики существуют, однако она всё-таки может отсеять некоторое количество невалидных почт.Что такое SMTP сервер?SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он используется для отправки сообщения на заданный адрес и, если сообщение доставить не удаётся, то SMTP-сервер сообщает об этом.Как это работает:Устанавливается соединение с SMTP сервером домена.Отправляется команда для проверки существования указанного почтового ящика.Сервер возвращает ответ, указывающий, существует ли почтовый ящик.Проверка через SMTP даёт надёжную валидацию email-адресов за счёт прямого взаимодействия с почтовыми серверами, которые подтверждают существование конкретного почтового ящика. Это самый эффективный способ убедиться в корректности email-адреса по сравнению с другими методами.ПрактикаЯ могу выделить две библиотеки, которые будут лучше всего подходить для нашей с вами задачи по валидации email-адресов.deep-email-validatorwww.npmjs.comdeep-email-validatorПреимущества:Библиотека достаточно популярна и широко используется.Поддержка TypeScriptНедостатки:Библиотека не обновлялась 3 года и скорее всего перестала поддерживатьсяКак использовать:import { validate } from "deep-email-validator"; // Импортируем библиотеку // Асинхронная функция для проверки адреса электронной почты async function validateEmail(email) { // Выполняем проверку электронной почты с помощью validate const result = await validate(email); // Проверяем, является ли адрес электронной почты действительным. if (result.valid) { // Если адрес электронной почты действителен, выводим сообщение в консоль. console.log("Email is valid"); } else { // Если адрес электронной почты недействителен, выводим сообщение в консоль с указанием причины. console.log("Email is invalid", result.reason); } } // Проверяем адрес электронной почты validateEmail("example@example.com"); // Результат: "Email is invalid smtp"@devmehq/email-validator-jswww.npmjs.com@devmehq/email-validator-jsПреимущества:Библиотека регулярно обновляется.Поддержка TypeScript.Возможность гибко настроить валидацию.Недостатки:Библиотека пока не такая популярная (около 2.5к скачиваний на данный момент в неделю)Как использовать:import { verifyEmail } from '@devmehq/email-validator-js'; // Импортируем библиотеку // Асинхронная функция для проверки адреса электронной почты async function validateEmail(email) { // Выполняем проверку электронной почты с помощью verifyEmail const { validFormat, validSmtp, validMx } = await verifyEmail({ emailAddress: email, verifyMx: true, // Включаем проверку MX-записей verifySmtp: true, // Включаем SMTP-проверку timeout: 3000 // Устанавливаем тайм-аут на 3 секунды }); // Проверяем результаты валидации if (validFormat && validSmtp && validMx) { // Если все проверки успешны, выводим сообщение о валидности email console.log('Email is valid'); } else { // Если какая-либо проверка не удалась, формируем сообщение о причине let reason = ''; if (!validFormat) reason += 'Invalid format. '; // Неправильный формат if (!validSmtp) reason += 'SMTP verification failed. '; // SMTP-проверка не пройдена if (!validMx) reason += 'MX records not found. '; // MX-записи не найдены // Выводим сообщение о недействительности email с указанием причины console.log('Email is invalid:', reason.trim()); } } // Проверяем адрес электронной почты validateEmail('example@example.com'); // Результат: Email is invalid: SMTP verification failed.ЗаключениеВалидация email-адресов — это, конечно же, прежде всего, залог успешного проекта. Понимая всю серьёзность и важность защиты от фиктивных адресов электронной почты, вы сделаете правильный выбор в пользу современных методов защиты.
1 из своих почт светить на всяких говносайтах? просят-набираем случайные буквы и после @ самый короткий домен. Ни кто не сольет, нет спама. Профит