java — проверка идентификаторов электронной почты для жесткого отказов

Я пробовал поиск, но у меня есть только платные онлайн-сервисы, нет кода для проверки данного адреса электронной почты действительно существует, так что я могу предотвратить сильный отскок.

Пожалуйста, смотрите код ниже, который может проверить только домен. Нужна помощь, это возможно. Решение может быть на любом языке, PHP (Предпочтительный), ДЖАВА, .СЕТЬ, Rudy

public function check_domain($email)
{
if( ! (bool) checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX'))
{
return FALSE;
}

return TRUE;
}

Обновить

Используя онлайн-сервисы, он показывает что-то вроде этого

MX record found: mta6.am0.yahoodns.net (Priority 1)
MX record found: mta5.am0.yahoodns.net (Priority 1)
MX record found: mta7.am0.yahoodns.net (Priority 1)
Connecting to mta6.am0.yahoodns.net
Connected to mta6.am0.yahoodns.net
Dialog with mta6.am0.yahoodns.net ok
------------------------------------------------------------
220 mta1278.mail.bf1.yahoo.com ESMTP ready
HELO verifyemailaddress.org
250 mta1278.mail.bf1.yahoo.com
MAIL FROM: <noreply@verifyemailaddress.org>
250 sender <noreply@verifyemailaddress.org> ok
RCPT TO: <xxxxx@yahoo.com>
250 recipient <xxxxxx@yahoo.com> ok
QUIT
221 mta1278.mail.bf1.yahoo.com
------------------------------------------------------------
Email address xxxxxx@yahoo.com accepted

Что именно они делают, отправляя электронное письмо ??

1

Решение

Как минимум, SMTP-соединение должно быть открыто для принимающего сервера, чтобы проверить, существует ли адрес электронной почты. Письмо на самом деле не нужно отправлять. Большинство почтовых серверов будут отвечать на RCPT TO Команда с ошибкой, если адрес электронной почты не существует. На данный момент, QUIT Команда может быть отправлена ​​без фактической отправки электронной почты. Некоторые почтовые серверы также позволяют вам выдавать VRFY Команда для проверки адреса, но это широко не поддерживается.

Так работают сервисы проверки электронной почты. Они выполняют эти рукопожатия и затем сохраняют результаты. Это то, что вы видите происходящим в приведенном вами примере; клиент QUITпосле RCPT TO,

Есть несколько других вариантов:

  1. Самое основное — проверить, что адрес электронной почты имеет правильную структуру. На этой странице есть одно регулярное выражение, чтобы проверить это — http://www.regular-expressions.info/email.html

  2. Более продвинутый — зависит от того, с какой целью вы пытаетесь предотвратить жесткие скачки. Однажды я играл с идеей эвристики, например, где имя пользователя должно быть длиной не менее X символов, а длина домена Y не должна превышать длину символа. Односимвольные имена пользователей действительны; Я не уверен насчет минимума для доменного имени. И если кто-то хочет нарушить эти правила, это тривиально; так что нет смысла.

  3. Более продвинутый — когда вы сталкиваетесь с новым доменом, подключитесь к принимающему SMTP-серверу и начните рукопожатие SMTP. Проверьте ответ на RCPT TO команда.

  4. Используйте службу проверки электронной почты, такую ​​как Kickbox. Эти сервисы видят множество адресов электронной почты и часто кэшируют соответствующие данные и готовы к работе, не дожидаясь или не выполняя рукопожатие.

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

4

Другие решения

Других решений пока нет …