Всем привет! перепробовал много примеров и скриптов, многие работают не правильно, что то проверяют, а что то нет вот доделал такой скрипт, но он почему то не проверяет gmail адреса, а mail ру всегда пишет что существует. проверял одновременно с сервисом http://2ip.ru/mail-checker/ что нужно поправить что бы проверял gmail и определял несуществующие email в маил ру почте ? помогите пожалуйста PHP: <?php if($_POST['checker']) { // эта функция отправляет команду в сокет, и возвращает ответ от сервера function sWrite( $socket, $data, $echo = true ){ // отображаем отправляемую команду, если это требуется if( $echo ) echo $data; // отправляем команду в сокет fputs( $socket, $data ); // получаем первый байт ответа от сервера $answer = fread( $socket, 1 ); // узнаем информацию о состоянии потока $remains = socket_get_status( $socket ); // и получаем оставшиеся байты ответа от сервера if( $remains --> 0 ) $answer .= fread( $socket, $remains['unread_bytes'] ); // функция возвращает ответ от сервера на переданную команду return $answer; } // адрес электропочты, который надо проверить $email = $_POST['email']; // получаем данные об MX-записи домена, указанного в email $mx = dns_get_record( end( explode( "@", $email ) ), DNS_MX ); $mx = $mx[0]['target']; // открываем сокет и создаем поток $socket = fsockopen( $mx, 25, $errno, $errstr, 10 ); if( !$socket ){ echo "$errstr ($errno)\n"; }else{ // отправляем пустую строку, чтобы получить приветствие сервера echo sWrite( $socket, "" ); // представляемся сами echo sWrite( $socket, "EHLO rambler.ru\r\n" ); echo sWrite( $socket, "MAIL FROM: <guest@rambler.ru>\r\n" ); // запрашиваем разрешение на отправку письма адресату $response = sWrite( $socket, "RCPT TO: $email\r\n" ); echo $response; // закрываем соединение echo sWrite( $socket, "<p>QUIT</p>\r\n" ); fclose( $socket ); // ниже идет простейшая обработка полученного ответа echo "\n<p>Check report:</p>\n"; if( substr_count( $response, "550" ) > 0 ) echo "<p><b>Данный адрес не существует <hr> Required email address does not exist.</b></p>\n\n"; else if( substr_count( $response, "250" ) > 0 ) if( substr_count( $response, "OK" ) > 0 ) echo " <p><b>Ура !!! Данный адрес существует <hr> Required email address exists.</b></p>\n\n"; else echo " <p><b>Ура! Адрес существует, возможно он используется для переадресации<hr>Email address accepted but it looks like the server is working as a relay host.</b></p>\n\n"; else echo "<p>Required email address existence was not recovered. Last response:</p>\n ---\n$response ---\n\n"; } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <form method="post"> <label for="url">URL:</label> <input type="text" name="email" value="" id="url"> <input type="submit" name="checker" value="проверить"> </form> </html>
Можно посмотреть какие запросы отправляет софт, подобный этому: MailList Validator http://www.bspdev.ru/products/mail-list-validator.html и добавить в скрипт
2 GAiN тебе нужен просто сниффер и любой аккаунт почты на томже mail.ru или gmail.com натравливаешь софт на их сервера и смотришь снифер... А по теме 1. у тебя не корректная отправка данных в сокет... 2. что за HTML теги в сокет?... 3. что за корявый скрипт.... походу ты его откуда-то стыбрил, а автор молодец оставил пасхалок. По поводу 1 пункта http://us1.php.net/manual/ru/function.fwrite.php - там есть пример записи в сокет и объяснение почему так надо... И вообще читай RFC