Проверка Email на валидность и существование.

Данная форма позволяет проверить Email на формальную валидность и существование на почтовом сервере.


?
Осталось 20 бесплатных запросов до 06:11:42 06.12.24
Проверено почтовых адресов за месяц по SMTP: 4 457 014


Для пакетной проверки почтовых адресов, Вы можете загрузить файл формата Excel (xlsx, xls, ods, xml, csv, txt), любой столбец которого содержит email для проверки. Файл может быть упакован zip или rar. За каждый проверенный email с вас будет списан один запрос согласно тарифа. Если включена проверка по SMTP: списывается два запроса, адреса в результирующем файле будут упорядочены по smtp-серверам. Если такой email не существует, то в файле после формально корректного адреса будет информация о проверке по SMTP.
Максимальный размер загружаемого файла 10Mb и 390 000 строк. Большие файлы лучше загружать в формате csv. Количество одновременно загруженных файлов не ограничено. Политика конфиденциальности.


Для загрузки файла необходимо войти или зарегистрироваться!

Результат будет продублирован на почту, указанную в профиле.


Как проверяется email адрес

Проверка синтаксиса

При запросе подтверждения адреса электронной почты в первую очередь будет выполнена проверка синтаксиса электронной почты, т.е. проверено его соответствие правилам регулярных выражений, таким как:

Формат адресов электронной почты - local-part@domain, где local-part может иметь длину до 64 символов, а имя домена может содержать не более 253 символов. Формальные определения приведены в RFC 5322 и RFC 5321 - с более читаемой формой, приведенной в информационном RFC 3696 .

Локальная часть состоит из прописных и строчных латинских букв (A – Z, a – z) (ASCII: 65–90, 97–122), Цифры от 0 до 9 (ASCII: 48–57), специальные символы: # - _ ~! $ & '() * +,; =: и %20, точка), точка (ASCII: 46) не может быть первым или последним символом, а также не идет последовательно (например, John..Doe@example.com).

Доменная часть email должна соответствовать строгим правилам: она должна соответствовать требованиям к имени хоста, состоящему из букв, цифр, дефисов и точек. Кроме того, доменная часть может быть литералом IP-адреса, заключенным в квадратные скобки, хотя это крайне редко встречается.

Проверка доступности почтового сервера

Проверяется доступность MX-записи почтового сервера с помощью DNS-запроса.

Проверка самого ящика на сервере (проверить по SMTP)

Для этого сервис устанавливает соединение с почтовым сервером получателя и отправляет ему команды по аналогии с отправкой письма. Если на сервере нет такого получателя, то при отправке команды "письмо для такого-то мыла"(RCPT TO:) сервер отвечает что такого ящика нет(код 550). Не все сервера отвечают согласно требованиям RFC, например сервера mail.ru на любое письмо отвечает кодом 250, что всё Ok.

Если включена проверка по SMTP: списывается два запроса, адреса в результирующем файле будут упорядочены по smtp-серверам

С примером установления соединения и отправки команд можете ознакомиться здесь. Время проверки каждого е-mail может занимать до 60 секунд.

Некоторые почтовые сервера для защиты от спама используют технологию серых списков (Greylisting). При отправке письма сервер отвечает кодом 450 или 451, что он временно не готов принять письмо. В этом случае необходимо повторно проверить почтовый адрес более чем через 30 минут. При разовой проверке и проверке по API повторный запрос не отправляется. При пакетной обработке файла система будет ждать 30+ минут и повторно опрашивать почтовый сервер. Время обработки файла с почтовыми адресами в этом случе существенно возрастает. Дополнительная оплата при пакетной обработке за повторную проверку не взимается.

Почтовые сервера mail.ru, inbox.ru, bk.ru, list.ru, outlook.com, hotmail.de, msn.com на любой адрес отвечают, что такой получатель есть и принимают для него полностью письмо. И только потом присылают FBL письмо, что такого адреса не существует. Вам нужно сделать почтовый ящик для таких писем прописать его в mail.ru и обрабатывать отписку для таких адресов.

Сервис проверки Email на валидность учитывает особенности формирования адреса почтовых серверов @yandex и @gmail.

Пример проверки Email на валидность

Данный пример при выходе из поля проверяет корректность заполнения поля е-mail.



Внимание! Использовать этот пример можно только из приватных сетей, т.к. он использует API_KEY на стороне клиента.

Исходный код этого примера:
<form action="" onsubmit="return false;" class="box">
    <label>Email: <input type="email" size="32" required name="email" onblur="onEmail(this);">
        <span id='error' style='color:red'></span><span id='message' style='color:darkgreen'></span></label><br>
</form><br>
<script>
    function onEmail(t) {
        // очищаем форму и ошибки
        document.getElementById('error').innerHTML = '';
        document.getElementById('message').innerHTML = '';
        // отправляем запрос на сервер и обрабатываем результат
        if(t.form.email.value!=''){
            fetch('https://htmlweb.ru/json/service/email?email='+encodeURIComponent(t.form.email.value)
                                            /*+'&smtp_check&api_key=API_KEY_из_профиля'*/)
                .then(
                    function(data){ // обрабатываем ответ от сервера
                        if (data.status !== 200) {
                            return Promise.reject(new Error(data.statusText));
                        }
                        return data.json(); // раскодируем json в объект
                    })
                .then(
                    function(data){
                        console.log('data:',data);
                        var o;
                        for(var key in data) {
                            // заполняю поля формы по name или по id
                            if (key in t.form) t.form[key].value = data[key];
                            else {
                                o = document.getElementById(key);
                                if (o)o.innerHTML = data[key]
                            }
                        }
                    })
                .catch(
                    function(error) {
                        console.error(error)
                    });
        }
    }
</script>

Api проверки Email на валидность

http://htmlweb.ru/api/service/email?email=проверяемый_email&api_key=API_KEY_из_профиля

Если Вы хотите проверить непосредственное наличие почтового ящика на сервере с помощью SMTP-запроса, добавьте параметр smtp_check. Время проверки может занять до 20 секунд. За проверку по smtp с вас будет списан дополнительный запрос. Пример:

http://htmlweb.ru/api/service/email?email=проверяемый_email&smtp_check&api_key=API_KEY_из_профиля
В ответе возможны следующие поля:
email - полный запрошенный e-mail
user - часть email до символа @
domain - домен
normalise - нормализованный e-mail. Для адресов на yandex и gmail приводит к единому адресу исключая лишние точки, плюсы и т.д., которые могут использоваться для двойных регистраций или отслеживания

format_valid = false - и в error будет сообщение:
error = 'Неверный символ в e-mail!' - текстовое сообщение, описывающее ошибку

free - почта на бесплатном почтовом сервере, типа yandex.ru или gmail.com

disposable = true - почта на одноразовом почтовом сервисе типа mailinator.com, trashmail.com и в message будет сообщение:
message = 'Email одноразовый' - текстовое информационное сообщение

mx_found = false - и в error будет сообщение:
error = 'Email сервер не существует!'

role=true - это адрес, который обычно указывает на функцию (например, «поддержка», «администратор почты»), а не на отдельное лицо или имя.

Если в запросе передан параметр smtp_check, то дополнительно возвращается:

mx_records - список почтовых серверов
smtp_check = true или false, если false, то в error код ответа SMTP-сервера

Если сервер защищен с помощью технологии серых списков, будет возвращено:
gray_listing=true
Для получения достоверного результата необходимо вызвать API повторно через час-полтора.

Если все проверки пройдены, возвращается:
message = 'email валидный'

Примеры API запросов проверки email

Пример запроса в формате json: https://htmlweb.ru/json/service/email?email=kdg@a12sd.ru

Ответ:
{"email":"kdg@a12sd.ru",
    "user":"kdg",
    "domain":"a12sd.ru",
    "mx_found":false,
    "error":"Email сервер не существует!",
    "limit":17}

Пример запроса: https://htmlweb.ru/json/service/email?email=kdg@gmail.com

Ответ:
{"email":"kdg@gmail.com",
    "user":"kdg",
    "domain":"gmail.com",
    "free":true,
    "message":"email валидный",
    "limit":16}

Пример запроса: https://htmlweb.ru/json/service/email?email=kdg22@htmlweb.ru&smtp_check

{"status":200,
"email":"kdg22@htmlweb.ru",
"user":"kdg22",
"domain":"htmlweb.ru",
"mx_records":["mx.yandex.ru"],
"smtp_check":false,
"error":"550 5.7.1 No such user!",
"limit":19}
Общие параметры для всех API сервисов
Другие сервисы, доступные по API
Стоимость API запроса и тарифы

Команды SMTP сервера

SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. ESMTP (англ. Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения. SMTP использует порт Порты TCP 25.

Протокол SMTP (RFC 821) использует простые текстовые команды в формате ASCII и возвращает трехзначные кодированные ответы с текстовыми сообщениями.

Формат команд в SMTP прост: command [parameter], где command — четырех символьная команда протокола SMTP, а parameter — необязательный параметр, определяющий тип данных в команде.

EHLO сервер_отправитель или устаревшая HELO хост_отправитель - Открываем соединение и сообщаем серверу имя отправляющего сервера (хоста)
MAIL FROM: адрес_отправителя - Email-адрес отправителя.
RCPT TO: адрес_получателя - Email-адрес получателя (recipient)
DATA - После этой команды передается тело сообщения оканчивающееся новой строкой с единственным символом "точка" (\r\n.\r\n), после этого восстанавливается командный режим
RSET - Прервать сообщение. При этом все ранее посланные команды — MAIL, RCPT и DATA будут аннулированы.
HELP [команда] - Краткая справка по команде или список поддерживаемых команд
QUIT - Завершение сеанса SMTP
VRFY имя_пользователя - Проверка имени пользователя (Команда обычно запрещена в целях безопасности)
VRFY rich
250 
VRFY prez@gmail.com
252 
VRFY jessica
550 jessica... User unknown
EXPN имя_пользователя - Показывает список всех алиасов пользователя (списки рассылки по Email-адресу) (Команда обычно запрещена в целях безопасности)
AUTH - Показывает серверу механизм аутентификации. RFC 4954 (пришел на смену RFC 2554).

Коды ошибок SMTP

Не все сервера строго следуют RFC, часто появляются разные трактовки одного кода ошибки. Здесь собраны некоторые нестандартные сообщения серверов. кст ошибки, которую вы получили, содержит:

550 message sending for this account is disabled
Для решения данной проблемы необходимо сменить пароль в почтовом ящике, с которого вы отправляете письмо — хождение почты должно восстановиться.

«Mailbox Full» или «User quota exceeded»
452-4.2.2 The email account that you tried to reach is over quota. Please direct
Данная проблема возникает из-за того, что почтовый ящик получателя переполнен. Сообщите получателю другим каналом связи о проблеме или повторите отправку позже.

«User not found» или «No such user»
Данная ошибка указывает на то, что электронный ящик, на который вы отправляете письма, не зарегистрирован в нашей системе.

Access to this account (user) имя_ящика@mail.ru/list.ru/bk.ru/inbox.ru is disabled
Данная ошибка выдается в связи с тем, что почтовый ящик получателя удален или заблокирован за неиспользование. Свяжитесь с получателем альтернативным способом.

We do not accept mail from dynamic IPs
Проблема заключается в том, что обратная запись (PTR) для вашего IP похожа на обратную запись для IP динамических сетей, от которых мы не принимаем почту в целях борьбы со спамом. Для решения данной проблемы вам необходимо обратиться к вашему провайдеру для изменения PTR — чтобы она соответствовала имени вашего домена.

550 Access from ip address blocked
Доступ с данного IP-адреса заблокирован из-за спам-рассылки

550 spam message discarded/rejected
Чтобы возобновить отправку писем, отправьте запрос в службу поддержки. Для этого перейдите по ссылке, которая была указана в ошибке, тогда обязательные поля будут заполнены автоматически.

452 Space shortage, please try later: retry timeout exceeded
452 4.5.3 : rate limit exceeded: retry timeout exceeded
Данная ошибка означает, что на сервере получателя закончилось место, и письмо не может быть доставлено, проблема является временной. Сообщите получателю другим каналом связи о проблеме или повторите отправку позже.

451 4.7.1 Temporarily rejected. Try again later.
451 Greylisting enabled, try again in 1 minutes
451 4.7.1 Greylisting in action, please come back in 00:15:00
450 4.2.0 <MAIL>: Recipient address rejected: Greylisted for 300 seconds
450 4.2.0 <MAIL>: Recipient address rejected: Greylisted for 60 seconds
421 4.7.0 Too many errors; closing connection
421 Service Temporarily Unavailable
421 Too many concurrent SMTP connections; please try again later.
Защита серыми списками, необходимо обратиться через некоторое время.


Купить скрипт проверки email адресов

На написание этого скрипта ушло меньше часа времени, а на его отладку я потратил больше месяца. Неоднократно я получал бан от почтовых серверов и потом вытаскивал свой ip из бана. Если Вы не хотите пройти через все злоключения, Вы можете приобрести скрипт проверки почтовых адресов за 9990 рублей (~99$). Код скрипта реализован на PHP, полностью открытый и не использует никаких дополнительных библиотек. Скрипт позволяет проверять файл, содержащий множество е-mail адресов или использовать одиночные API-запросы. Скрипт НЕ будет работать на виртуальном хостинге с закрытым портом SMTP.

    Соглашение по использованию платной версии:
  • Вы можете использовать полученный код в любых своих разработках, вы не обязаны указывать ссылку на источник.
  • Вы НЕ имеете права перепродавать его, размещать в свободном или ограниченном доступе, а также публиковать в любом виде.
  • Все остальные права сохраняются за автором.

Регистрация Войти Войти через VK Войти через FB Войти через Google Войти через Яндекс

При нажатии кнопки Оплатить и загрузить, Вы подтверждаете согласие с условиями использования скрипта, описанными на этой странице.
Вы будете перенаправлены на страницу выбора способа оплаты, после оплаты 9990 рублей (~99$) начнется загрузка файла.
Чтобы мы не потеряли Вашу оплату при потере соединения, укажите Ваш действующий
адрес электронной почты
Сомневаетесь? Вы всегда сможете задать вопросы и получить помощь.

Вам может быть интересно:


.