Как проверить, существует ли идентификатор электронной почты или нет, используя PHP? и получить информацию о владельце электронного идентификатора? можно ли получить информацию о владельце идентификатора электронной почты? должны работать с некоторыми протоколами, такими как POP? Пожалуйста помогите.
Как проверить, существует ли идентификатор электронной почты или нет?
Ответы (2)
Допустим, пользователь отправляет следующий адрес электронной почты:
Проверки, которые вы хотели бы выполнить по порядку, выглядят так:
- Является ли адрес действительным
- На домене работает почтовый сервер / записи 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, который предоставляет шлюз для проверки, проверьте домен, чтобы увидеть, был ли он внесен в черный список, если он есть, электронная почта вполне может быть действительной и активной, но помечена как спам, поэтому это ненадежная электронная почта, и вам следует запросить альтернативный адрес электронной почты для авторизации против
Это некоторые из методов проверки, используемых для проверки адреса электронной почты, сейчас существует множество других методов проверки, но это лишь некоторые из основных.
Нет 100% гарантированного способа узнать, действителен ли адрес электронной почты, без отправки электронного письма и получения ответа от пользователя каким-либо образом. Есть проверки, которые вы можете сделать, чтобы увеличить шансы узнать, действителен ли адрес электронной почты или нет. Вы можете выполнить поиск DNS и посмотреть, есть ли у домена запись MX. Есть также части протокола SMTP, которые вы можете использовать, но ничто не требует, чтобы SMTP-сервер отвечал на эти команды. Centralops.net предоставляет продукт, который может помочь, но, опять же, это не гарантируется.
Если бы был надежный способ справиться с этим, то почему практически каждый сайт, на котором есть функция регистрации, требовал бы, чтобы вы каким-то образом ответили на электронное письмо? Вопрос не должен быть ехидным; Я просто надеюсь, что это поможет вам увидеть, что другие сайты не смогли выполнить ту же самую проверку, о которой вы просите.
ХТН