Просмотр полной версии : Проверка E-mail ???
Вопрос :confused: - сущ-ют ли средства (с использованием ПХП) для проверки E-mail, т.е. заполняется форма и как сразу проверить: сущ. такое мыло или нет....
советы и примеры, а так же скрипты приму с БОЛЬШОЙ БЛАГОДОРНОСТЬЮ :)
Разве никто не сталкивался с "левыми" е-майлами в БД. Тем более знаю, что это сделанно у других...
Можно добавить код на просмотр отправляет письмо, но.... кстати если есть у кого такой код, то буду благодарен... (не столь важно).
А важно, что б не слать письма на не сущ. мыльца....
ПОДСКАЖИТЕ ПЛИЗЗЗЗ.
обычно проверяется валидность адреса в принципе, т.е. правильность ввода (не исп. спец. символов, пробелов и т.д.) а что б проверяло существование такого мыла в принципе... хм.... это вроде как не возможно
Абсолютно верно. Проверка валидности мыла в общем случае невозможна. Да и нафиг? Проверка "похоже на мыло" делается лишь чтобы уберечь заполняющего форму от опечаток.
Я сам столкнулся недавно с такой штукой. Оказывается все не так сложно. Проверяется через регулярные выражения.
Конечно не существование конкретного мэйла, а корректность ввода по шаблону ^.+@.+\..+$
Спасибо ВАМ, за то что откликнулись. Про такую проверку знаю, сам делаю.
Есть же ведь, сайты при заполнении формы они проверяют реальность мыла (я не совсем понимаю механизм :( ).
Подумал может, кто такое уже реализовал или знает как.
Будем искать... может найду...
Ты можешь назвать пример такого сайта?
Не так давно помоему этот вопрос уже тут поднимался. Все адреса проверить не получится т.к. не все почтовые службы могут отвечать на запрос о существовании конкретного е-мыла. Делается это специально, во избежании спама...
~ больше года назад, видел... что-то бесплатное, то ли бонусы зарабатывать было нужно, то ли рассылать письма надо было...
НО при регистрации надо было заплнять форму ВОТ в ней и стояла проверка на "реальность мыла". Кажется адресов 10 ради хохмы (проверял на левых) перепробовал... давно было.
Значит это не реально, если сами почтовики ответа "толкового" не дают :( на левый e-mail.
Хорошо, тогда подскажите - какой лучший способ для того что бы убедится в сущ. e-mail-a.
1. Послать письмо для подт. регистрации.
2. Знаю, что можно припихать код (на чем не знаю МОЖЕТ КТО ЗНАЕТ) после просмотра пересылает письмо отправителю.
3. ....... Ваше предложение.....
джагги на работе
16.01.2002, 11:59
вроде есть какя-то база с которой скрипт соединяется и проверяет мыл. надо узнать
Если узнаешь, то напиши.... ОК?
Спасибо.
Мечта спамера: Получить доступ к базе данных е-мыльных адресов во всем интернете... :p
джагги на работе
16.01.2002, 13:21
угу. было бы здорово !
Оригинал написал(а) джагги на работе
вроде есть какя-то база с которой скрипт соединяется и проверяет мыл. надо узнать
Чудес не бывает. Это я говорю как админ почтового сервера. :)
...можно, в принципе, проверить доменную часть e-mail'а -- справа от собаки. Если в DNS'е прописан MX на этот домен, то есть шанс , что такой e-mail существует.
... можно и домен проверять, знать бы как :confused: ??? :confused: .....если подскажете.......
но это дает все же дает большую вероятность появления в БД левого мыла....
мда... :( чудес не бывает мы их делаем сами...
http://www.hotscripts.com/PHP/Scripts_and_Programs/Networking_Tools/DNS/
Anton-Killer
26.01.2002, 18:37
<?
function SnowCheckMail($Email,$Debug=false)
{
global $HTTP_HOST;
$Return =array();
// Variable for return.
// $Return[0] : [true|false]
// $Return[1] : Processing result save.
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $Email)) {
$Return[0]=false;
$Return[1]="${Email} is E-Mail form that is not right.";
if ($Debug) echo "Error : {$Email} is E-Mail form that is not right.<br>";
return $Return;
}
else if ($Debug) echo "Confirmation : {$Email} is E-Mail form that is not right.<br>";
// E-Mail @ by 2 by standard divide. if it is $Email this "lsm@ebeecomm.com"..
// $Username : lsm
// $Domain : ebeecomm.com
// list function reference : <a href="http://www.php.net/manual/en/function.list.php" target="_blank">http://www.php.net/manual/en/function.list.php</a>
// split function reference : <a href="http://www.php.net/manual/en/function.split.php" target="_blank">http://www.php.net/manual/en/function.split.php</a>
list ( $Username, $Domain ) = split ("@",$Email);
// That MX(mail exchanger) record exists in domain check .
// checkdnsrr function reference : <a href="http://www.php.net/manual/en/function.checkdnsrr.php" target="_blank">http://www.php.net/manual/en/function.checkdnsrr.php</a>
if ( checkdnsrr ( $Domain, "MX" ) ) {
if($Debug) echo "Confirmation : MX record about {$Domain} exists.<br>";
// If MX record exists, save MX record address.
// getmxrr function reference : <a href="http://www.php.net/manual/en/function.getmxrr.php" target="_blank">http://www.php.net/manual/en/function.getmxrr.php</a>
if ( getmxrr ($Domain, $MXHost)) {
if($Debug) {
echo "Confirmation : Is confirming address by MX LOOKUP.<br>";
for ( $i = 0,$j = 1; $i < count ( $MXHost ); $i++,$j++ ) {
echo " Result($j) - $MXHost[$i]<BR>";
}
}
}
// Getmxrr function does to store MX record address about $Domain in arrangement form to $MXHost.
// $ConnectAddress socket connection address.
$ConnectAddress = $MXHost[0];
}
else {
// If there is no MX record simply @ to next time address socket connection do .
$ConnectAddress = $Domain;
if ($Debug) echo "Confirmation : MX record about {$Domain} does not exist.<br>";
}
// fsockopen function reference : <a href="http://www.php.net/manual/en/function.fsockopen.php" target="_blank">http://www.php.net/manual/en/function.fsockopen.php</a>
$Connect = fsockopen ( $ConnectAddress, 25 );
// Success in socket connection
if ($Connect)
{
if ($Debug) echo "Connection succeeded to {$ConnectAddress} SMTP.<br>";
// Judgment is that service is preparing though begin by 220 getting string after connection .
// fgets function reference : <a href="http://www.php.net/manual/en/function.fgets.php" target="_blank">http://www.php.net/manual/en/function.fgets.php</a>
if ( ereg ( "^220", $Out = fgets ( $Connect, 1024 ) ) ) {
// Inform client's reaching to server who connect.
fputs ( $Connect, "HELO $HTTP_HOST\r\n" );
if ($Debug) echo "Run : HELO $HTTP_HOST<br>";
$Out = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Inform sender's address to server.
fputs ( $Connect, "MAIL FROM: <{$Email}>\r\n" );
if ($Debug) echo "Run : MAIL FROM: <{$Email}><br>";
$From = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Inform listener's address to server.
fputs ( $Connect, "RCPT TO: <{$Email}>\r\n" );
if ($Debug) echo "Run : RCPT TO: <{$Email}><br>";
$To = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Finish connection.
fputs ( $Connect, "QUIT\r\n");
if ($Debug) echo "Run : QUIT<br>";
fclose($Connect);
// Server's answering cord about MAIL and TO command checks.
// Server about listener's address reacts to 550 codes if there does not exist
// checking that mailbox is in own E-Mail account.
if ( !ereg ( "^250", $From ) || !ereg ( "^250", $To )) {
$Return[0]=false;
$Return[1]="${Email} is address done not admit in E-Mail server.";
if ($Debug) echo "{$Email} is address done not admit in E-Mail server.<br>";
return $Return;
}
}
}
// Failure in socket connection
else {
$Return[0]=false;
$Return[1]="Can not connect E-Mail server ({$ConnectAddress}).";
if ($Debug) echo "Can not connect E-Mail server ({$ConnectAddress}).<br>";
return $Return;
}
$Return[0]=true;
$Return[1]="{$Email} is E-Mail address that there is no any problem.";
return $Return;
}
?>
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.