проверка существующих почтовых адресов

Discussion in 'PHP' started by GAiN, 1 Dec 2013.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    Всем привет!
    перепробовал много примеров и скриптов, многие работают не правильно, что то проверяют, а что то нет

    вот доделал такой скрипт, но он почему то не проверяет gmail адреса, а mail ру всегда пишет что существует.

    проверял одновременно с сервисом http://2ip.ru/mail-checker/

    что нужно поправить что бы проверял gmail и определял несуществующие email в маил ру почте ?
    помогите пожалуйста :confused:

    PHP:
    <?php
    if($_POST['checker']) {
    // эта функция отправляет команду в сокет, и возвращает ответ от сервера
    function sWrite$socket$data$echo true ){
       
    // отображаем отправляемую команду, если это требуется
       
    if( $echo ) echo $data;
       
    // отправляем команду в сокет 
      
    fputs$socket$data );
       
    // получаем первый байт ответа от сервера
       
    $answer fread$socket);
       
    // узнаем информацию о состоянии потока
       
    $remains socket_get_status$socket ); 
      
    // и получаем оставшиеся байты ответа от сервера 
      
    if( $remains --> $answer .= fread$socket$remains['unread_bytes'] );
      
    // функция возвращает ответ от сервера на переданную команду
      
    return $answer;
    }
     
    // адрес электропочты, который надо проверить
    $email $_POST['email'];
    // получаем данные об MX-записи домена, указанного в email
    $mx dns_get_recordendexplode"@"$email ) ), DNS_MX );
    $mx $mx[0]['target'];
    // открываем сокет и создаем поток
    $socket fsockopen$mx25$errno$errstr10 );
    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" ) > ) echo "<p><b>Данный адрес не существует <hr> Required email address does not exist.</b></p>\n\n";
      else if( 
    substr_count$response"250" ) > ) if( substr_count$response"OK" ) > ) 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>
     
  2. Asin

    Asin New Member

    Joined:
    28 Oct 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Можно посмотреть какие запросы отправляет софт, подобный этому:
    MailList Validator
    http://www.bspdev.ru/products/mail-list-validator.html
    и добавить в скрипт
     
  3. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    тут нужен работающий stmp, у меня в системе не работает stmp, не получается настроить
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    2 GAiN тебе нужен просто сниффер и любой аккаунт почты на томже mail.ru или gmail.com
    натравливаешь софт на их сервера и смотришь снифер...

    А по теме 1. у тебя не корректная отправка данных в сокет... 2. что за HTML теги в сокет?... 3. что за корявый скрипт.... походу ты его откуда-то стыбрил, а автор молодец оставил пасхалок.

    По поводу 1 пункта http://us1.php.net/manual/ru/function.fwrite.php - там есть пример записи в сокет и объяснение почему так надо...

    И вообще читай RFC :)
     
    _________________________