Другие ответы здесь обсуждают различные проблемы с попыткой сделать это. Я думал, что покажу, как вы могли бы попробовать это, если бы вы хотели учиться, делая это сами.
Вы можете подключиться к почтовому серверу через telnet, чтобы узнать, существует ли адрес электронной почты. Вот пример проверки адреса электронной почты для stackoverflow.com
:
C:\>nslookup -q=mx stackoverflow.com
Non-authoritative answer:
stackoverflow.com MX preference = 40, mail exchanger = STACKOVERFLOW.COM.S9B2.PSMTP.com
stackoverflow.com MX preference = 10, mail exchanger = STACKOVERFLOW.COM.S9A1.PSMTP.com
stackoverflow.com MX preference = 20, mail exchanger = STACKOVERFLOW.COM.S9A2.PSMTP.com
stackoverflow.com MX preference = 30, mail exchanger = STACKOVERFLOW.COM.S9B1.PSMTP.com
C:\>telnet STACKOVERFLOW.COM.S9A1.PSMTP.com 25
220 Postini ESMTP 213 y6_35_0c4 ready. CA Business and Professions Code Section 17538.45 forbids use of this system for unsolicited electronic mail advertisements.
helo hi
250 Postini says hello back
mail from: <[email protected]>
250 Ok
rcpt to: <[email protected]>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 w41si3198459wfd.71
Строки с префиксом числовыми кодами являются ответы от сервера SMTP. Я добавил несколько пустых строк, чтобы сделать его более читаемым.
Многие почтовые серверы не возвращают эту информацию в качестве средства предотвращения сбоев электронной почты спамеров, поэтому вы не можете полагаться на эту технику. Однако у вас может быть некоторый успех при очистке некоторых явно плохих адресов электронной почты, обнаружение недопустимых почтовых серверов или отказ адресов получателей, как указано выше.
Обратите внимание, что почтовые серверы могут помечать черный список, если вы делаете слишком много запросов от них.
В PHP я верю, что вы можете использовать fsockopen
, fwrite
и fread
выполнить описанные выше действия программно:
$smtp_server = fsockopen("STACKOVERFLOW.COM.S9A1.PSMTP.com", 25, $errno, $errstr, 30);
fwrite($smtp_server, "helo hi\r\n");
fwrite($smtp_server, "mail from: <[email protected]>\r\n");
fwrite($smtp_server, "rcpt to: <[email protected]>\r\n");
Аналогичный вопрос: [Можно проверить, существует ли почтовый адрес с использованием .net?] (Http://stackoverflow.com/questions/3883518/can-i-check-if-an-email-address-exists-using -net) – sleske
Просто интересно, почему у этого есть тег Telnet? – Piccolo
Существует библиотека PHP, которая делает именно это: https://github.com/kickboxio/kickbox-php – Dan