Допустим, пользователь отправляет следующий адрес электронной почты:
- stackuser@stackoverflow.com
Проверки, которые вы хотели бы выполнить по порядку, выглядят так:
- Является ли адрес действительным
- Работает ли в домене почтовый сервер / MX Records
- Это черный список
Во-первых, в PHP вы можете проверить электронную почту, используя filter_var
, например:
$is_valid = filter_var("stackuser@stackoverflow.com",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: <youremail@yoursite.com>
250 2.1.0 Ok
SEND > rcpt to: <stackuser@stackoverflow.com>
> 550 5.1.1 <stackuser@stackoverflow.com>: 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-сервер, который предоставляет шлюз для проверки домена, чтобы проверить, был ли он занесен в черный список, если у него электронная почта может быть действительной и активной, но имеет помечен как спам, поэтому это ненадежный адрес электронной почты, и вам следует запросить альтернативный адрес электронной почты для авторизации против
Это некоторые из методов проверки, использованных для проверки адреса электронной почты, теперь существует намного больше методов проверки, но это лишь некоторые из основных.