Как проверить, существует ли идентификатор электронной почты или нет?


Как проверить, существует ли идентификатор электронной почты или нет, используя PHP? и получить информацию о владельце идентификатора электронной почты? можно ли получить информацию о владельце идентификатора электронной почты? нужно ли работать с некоторыми протоколами, такими как POP? Пожалуйста, помогите мне.

Author: drudge, 2011-01-12

2 answers

Допустим, пользователь отправляет следующий адрес электронной почты:

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

  • Является ли адрес действительным
  • Работает ли в домене почтовый сервер /Записи MX
  • Занесен ли он в черный список

Во-первых, в PHP вы можете проверить электронную почту с помощью filter_var примерно так:

$is_valid = filter_var("[email protected]",FILTER_VALIDATE_EMAIL);

Во-вторых, вы хотели бы проверить, работает ли в домене сервер электронной почты, чтобы сделать это вы можете проверить записи dns для MX следующим образом:

$has_dns_mx_record = checkdnsrr("stackoverflow.com","MX");

Вы также можете открыть порт в домене следующим образом:

$socket = fsockopen("stackoverflow.com", 25);
$mail_running = (bool)$socket;
fclose($socket);

Вы также можете проверить, отвечает ли SMTP-сервер 550, т.е. электронная почта не существует, например:

SEND > helo hi
250 stackoverflow.com

SEND > mail from: <[email protected]>
250 2.1.0 Ok

SEND > rcpt to: <[email protected]>
> 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table

Учитывая вышесказанное, вы можете отправлять команды на действительный smtp-сервер, например helo > mail from <...> и проверьте ответ 550.

Посмотрите здесь некоторые коды ответов: http://www.greenend.org.uk/rjk/2000/05/21/smtp-replies.html

Также вы должны принять к сведению комментарий @slebetman, в котором говорится, что небольшой процент почтовых > серверов настроен на ответ 550, чтобы предотвратить вынюхивание из действительных адресов электронной почты.

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

Вот некоторые из методов проверки, используемых для проверки адреса электронной почты, сейчас существует множество других методов проверки, но это лишь некоторые из основных.

 12
Author: RobertPitt, 2014-01-30 09:53:05

Нет 100% гарантированного способа узнать, действителен ли адрес электронной почты, без отправки электронного письма и получения ответа пользователя каким-либо образом. Есть проверки, которые вы можете сделать, чтобы увеличить шансы узнать, действителен ли адрес электронной почты или нет. Вы можете выполнить поиск в DNS и посмотреть, есть ли в домене запись MX. Существуют также части протокола SMTP, которые вы можете использовать, но ничто не требует, чтобы SMTP-сервер отвечал на эти команды. Centralops.net предоставляет продукт, который может помочь, но опять же, это не гарантировано.

Если бы существовал надежный способ справиться с этим, то почему практически каждый сайт, на котором есть функция регистрации, требует, чтобы вы каким-то образом отвечали на электронное письмо? Вопрос не должен быть ехидным; Я просто надеюсь, что это поможет вам увидеть, что другие сайты не смогли выполнить ту же проверку, о которой вы просите.

НТХ

 13
Author: Brian Ball, 2011-01-12 00:36:57