Проверка корректности и существования email-ов вводимых пользователями при регистраци

Leonid

PHP? нет, не слышал...
Видимо кривизна рук у пользователей - величина бесконечная.

Само собой регуляркой на JS проверяется чтобы было name@domen

Они все равно продолжают вводить www.name@domen;
meil.ru, mil.ru, email.ru и пр. вместо mail.ru.
yandeks.ru, jandex.ru, yadnex.ru и пр. вместо @yandex.ru.

Для самых распространенных ошибок добавил проверку на JS, типа "вы уверены что [email protected], может заменить на @mail.ru?" Но многие на это забивают. Плюс выдумывают всевозможные конструкции типа [email protected] или [email protected]. Либо уж совсем извращают и пишут что-нибудь типа @jandexks.ru У меня фантазии не хватает это все предусмотреть.

Конечно, самая распространенная ошибка - пропустить одну букву или цифру, написать в имени не ту букву или символ. Т.е. формально email правильный, но письмо для регистрации они не получат, и будут потом мне писать "не могу у вас зарегистрироваться".

И даже если напишут правильно, все равно иногда получаю ответ от почтового сервиса что "аккаунт заблокирован" или "аккаунт заморожен", т.е. им сто лет не пользовались.

В общем около 5 - 10% регистраций приходится проверять вручную, искать по базе похожие email-лы... Как бы это автоматизировать, чтобы сайт мог получить письмо с ошибкой, и если в ответе "account disabled" или "user not found", или "unrouterable address" сообщить об этом юзеру - "ПРОВЕРЬ ЕЩЕ РАЗ ВВЕДЕННЫЙ EMAIL!!!!"
 

JSergRu

..ιilliιlιiιliιllilιι..
криворуким пользователям проще регистрироваться с помощью социальных сетей, как вариант добавить кнопку "зарегистрироваться с помощью вконтакте, одноклассники и т.д."
 

С.

Продвинутый новичок
Вот нашел в старых загашниках. Когда-то она работала, но широкого применения не получила:
PHP:
  function isMailValid($email)
  {
    $host= substr(strstr($email, '@'), 1) . ".";
    if (!getmxrr($host, $mxhosts )) $mxhosts= array($host);
    $localhost= $_SERVER['HTTP_HOST'];
    $sender= "info@$localhost";
    $result= false;
    foreach ($mxhosts as $host)
    {
      if ($connection= @fsockopen($host, 25, $errno, $error, 10))
      {
        fputs($connection,"HELO $localhost\r\n"); // 250
        $response= fgets($connection,1024);
        if ($response[0] == '2') // 200, 250 etc.
        {
          fputs($connection,"MAIL FROM:<$sender>\r\n");
          $response= fgets($connection,1024);
          if ($response[0] == '2') // 200, 250 etc.
          {
            fputs($connection,"RCPT TO:<$email>\r\n");
            $response= fgets($connection,1024);
            if ($response[0] == '2') // 200, 250 etc.
            {
              fputs ($connection,"data\r\n");
              $response= fgets($connection,1024);
              if ($response[0] == '2') $result= true;
            }
          }
        }
        fputs ($connection,"QUIT\r\n");
        fclose ($connection);
        if ($result) return true;
      }
    }
    return false;
  }
 

hell0w0rd

Продвинутый новичок
А просто не надо завязывать регистрацию на мыло. Зарегистрировался - пусть подтвердит email. Если не подтвердит в течении 3 дней - удаляем акк и все
 
Сверху