|
|
|
| А можно хоть приблизительно оценить реальность п/я ящика? | |
|
|
|
|
|
|
|
для: Valleri
(01.06.2011 в 03:12)
| | Можно отправить почтовое сообщение на данным момент с уникальной ссылкой, по которой пользователь должен перейти, чтобы подтвердить реальность существования данного e-mail. | |
|
|
|
|
|
|
|
для: Valleri
(01.06.2011 в 03:12)
| | Можно спросить сам почтовый сервер. Например так:
<?
function isValid($email) {
// для начала проверим формат адреса
if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) return false; // для этой функции нужен PHP 5.2 и выше
// затем получим MX адреса
list(, $domain) = explode('@', $email);
if ( !getmxrr($domain, $mx) ) $mx = array($domain); // на windows эта функция работает только в PHP 5.3 и выше
// подключаемся к SMTP порту
$fp = @fsockopen($mx[0], 25, $errno, $errstr, 1);
if ( !$fp ) return false;
// общаемся с сервером
$resp = array();
fwrite($fp, "HELO example.com\r\n");
$helo = fread($fp, 1024);
if ( substr($helo, 0, 3) !== '220' ) return false;
fwrite($fp, "MAIL FROM: <nobody@example.com>\r\n");
$resp[] = fread($fp, 1024);
fwrite($fp, "RCPT TO: <$email>\r\n");
$resp[] = fread($fp, 1024);
fwrite($fp, "QUIT\r\n");
$resp[] = fread($fp, 1024);
fclose($fp);
// проверяем ответы сервера
foreach ( $resp as $r ) {
if ( substr($r, 0, 2) !== '25' ) {
return false;
}
}
return true;
}
var_dump(isValid('petyavasya30@gmail.com'));
|
Результат работы этой функции сильно зависит от настроек почтового сервера и антиспамовых фильтров. Например, она гарантированно не работает для mail.ru. Я не рекомендую использовать эту функцию в реальных проектах и уж тем более полагаться на её результаты.
Если и применять, то только для проверенных почтовых серверов. Причём этот список нужно постоянно перепроверять, так как поведение сервера может внезапно измениться и функция станет врать.
Лучше отправлять активационное письмо, как предлагает cheops. | |
|
|
|
|
|
|
|
для: Valleri
(01.06.2011 в 03:12)
| | У большинства почтовиков при регистрации есть автоматическая проверка занятости выбранного логина. Можно проследить что за AJAX-запросы посылаются и сэмулировать их.
Каждый сервер накладывает свои ограничения на логин, например минимальная, максимальная длина и допустимый набор символов в логине. Можно ориентироваться на это. Вряд ли адрес ag@mail.ru является реальным, так как у mail.ru минимальная длина логина — 4 символа.
А ещё в сети куча сервисов одноразовых почт. Например mailinator.com. Вряд ли такую почту можно назвать реальной. Поэтому можно вести список таких сервисов и проверять почту по нему.
Ещё можно проводить анализ логина на "человечность". Например, довольно мала вероятность того, что адрес aghekjfnnsey@mail.ru зарегистрировал человек, а не бот.
Все перечисленные способы ненадёжны и трудоёмки в реализации и поддержке актуальности. Пусть этим занимаются спамеры. А активационное письмо — наше всё! | |
|
|
|