BigAp.ru — интернет-магазин электроники и бытовой техники

Автор Тема: Проверка валидности email адресов  (Прочитано 2088 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8094
  • Karma: +110/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Проверка валидности email адресов
« : Май 14, 2014, 09:19:07 pm »
Всем привет, образовалась небольшая задачка - есть большой список email адресов, необходимо проверить эти адреса на валидность, подскажите кто знает, как это можно сделать?
дорогу осилит идущий...
......................
MCP, MCTS, RHCSA
......................
also aka xck...

 

Khutr

  • Гость
Проверка валидности email адресов
« Ответ #1 : Май 15, 2014, 03:50:25 pm »
Спойлер
<?php

/*

*  This script was writed by Setec Astronomy - setec@freemail.it

*

*  This script is distributed under the GPL License

*

*  This program is distributed in the hope that it will be useful,

*  but WITHOUT ANY WARRANTY; without even the implied warranty of

*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

*   GNU General Public License for more details.

*

http://www.gnu.org/licenses/gpl.txt

*

*/

define ('DEBUG_OK', true);

class CCheckMail

{

  var $timeout = 10;

  var $domain_rules = array ("aol.com", "bigfoot.com", "brain.net.pk", "breathemail.net",

                "compuserve.com", "dialnet.co.uk", "glocksoft.com", "home.com",

                "msn.com", "rocketmail.com", "uu.net", "yahoo.com", "yahoo.de");

               

  function _is_valid_email ($email = "")

    { return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email); } 

 

  function _check_domain_rules ($domain = "")

    { return in_array (strtolower ($domain), $this->domain_rules); }



  function execute ($email = ""){

    if (!$this->_is_valid_email ($email)) return false;

    $host = substr (strstr ($email, '@'), 1);



    if ($this->_check_domain_rules ($host)) return false;

    $host .= ".";



    if (getmxrr ($host, $mxhosts[0], $mxhosts[1]) == true)  array_multisort ($mxhosts[1], $mxhosts[0]);

    else { $mxhosts[0] = $host;

       $mxhosts[1] = 10;

     }

    if (DEBUG_OK) print_r ($mxhosts);

   

    $port = 25;

    $localhost = $_SERVER['HTTP_HOST'];

    $sender = 'info@' . $localhost;

   

    $result = false;

    $id = 0;

    while (!$result && $id < count ($mxhosts[0]))

    { if (function_exists ("fsockopen"))

         { if (DEBUG_OK) print_r ($id . " " . $mxhosts[0][$id]);

           if ($connection = fsockopen ($mxhosts[0][$id], $port, $errno, $error, $this->timeout))

          {

              fputs ($connection,"HELO $localhost\r\n"); // 250

              $data = fgets ($connection,1024);

              $response = substr ($data,0,1);

              if (DEBUG_OK) print_r ($data);

              if ($response == '2') // 200, 250 etc.

             {

                fputs ($connection,"MAIL FROM:<$sender>\r\n");

                $data = fgets($connection,1024);

                $response = substr ($data,0,1);

                if (DEBUG_OK) print_r ($data);

                if ($response == '2') // 200, 250 etc.

               {

                  fputs ($connection,"RCPT TO:<$email>\r\n");

                  $data = fgets($connection,1024);

                  $response = substr ($data,0,1);

                  if (DEBUG_OK) print_r ($data);

              if ($response == '2') // 200, 250 etc.

                 {

                    fputs ($connection,"data\r\n");

                    $data = fgets($connection,1024);

                    $response = substr ($data,0,1);

                    if (DEBUG_OK) print_r ($data);

                    if ($response == '2') // 200, 250 etc.

                   { $result = true; }

                     }

               }

             }

          fputs ($connection,"QUIT\r\n");

              fclose ($connection);

              if ($result) return true;

            }

       }

      else  break;

      $id++;

    } //while

    return false;

}

}

?>


Пример использования:
$str='vasya@mail.ru'
$alter=new CCheckMail ();
print "E-mail: ".$str." - ".($alter->execute($str)?'существует':'не существует');

Онлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8094
  • Karma: +110/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Проверка валидности email адресов
« Ответ #2 : Май 15, 2014, 07:30:12 pm »
Попробую, спасибо


xx
Проверка валидности email из скрипта

Автор sysadmin

0 Ответов
788 Просмотров
Последний ответ Сентябрь 30, 2014, 03:08:30 pm
от sysadmin
xx
База email (почтовых) адресов спама

Автор sysroman

1 Ответов
284 Просмотров
Последний ответ Декабрь 10, 2015, 04:35:20 pm
от sysadmin
xx
Список RBL адресов

Автор sysadmin

3 Ответов
6158 Просмотров
Последний ответ Август 09, 2009, 04:26:18 pm
от sysadmin
moved
Перенесено: Список RBL адресов

Автор sysadmin

0 Ответов
2482 Просмотров
Последний ответ Август 11, 2009, 01:52:24 pm
от sysadmin