Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Проверка Email на валидность и существование.
Данная форма позволяет проверить Email на формальную валидность и существование на почтовом сервере.
Как проверяется 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 250EXPN имя_пользователя - Показывает список всех алиасов пользователя (списки рассылки по Email-адресу) (Команда обычно запрещена в целях безопасности)VRFY prez@gmail.com 252 VRFY jessica 550 jessica... User unknown
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 Войти через Яндекс
Вам может быть интересно:
- Проверить IP адрес по анти-спам базам
- Информация о телефонном номере ( страна, регион, оператор )
- Информация о перенесенных телефонных номерах
- Чтение FBL почты и отработки отписки
- Скрипт на PHP проверки существования E-Mail
- Скрипт е-mail рассылки на PHP
- Скрипт отправки почты по шаблону минуя SMTP-сервер провайдера на PHP
- Рекомендации как делать рассылки
- Получить данные об организации или ИП: онлайн-форма и API
- Примеры шаблонов проверки поля ввода
- Пакетная проверка занятости доменов.
.
Прокомментировать/Отблагодарить