PDA

Просмотр полной версии : Проверка E-mail ???


MrGarry
14.01.2002, 12:22
Вопрос :confused: - сущ-ют ли средства (с использованием ПХП) для проверки E-mail, т.е. заполняется форма и как сразу проверить: сущ. такое мыло или нет....

советы и примеры, а так же скрипты приму с БОЛЬШОЙ БЛАГОДОРНОСТЬЮ :)

MrGarry
14.01.2002, 18:23
Разве никто не сталкивался с "левыми" е-майлами в БД. Тем более знаю, что это сделанно у других...
Можно добавить код на просмотр отправляет письмо, но.... кстати если есть у кого такой код, то буду благодарен... (не столь важно).
А важно, что б не слать письма на не сущ. мыльца....
ПОДСКАЖИТЕ ПЛИЗЗЗЗ.

Modest
14.01.2002, 20:43
обычно проверяется валидность адреса в принципе, т.е. правильность ввода (не исп. спец. символов, пробелов и т.д.) а что б проверяло существование такого мыла в принципе... хм.... это вроде как не возможно

Crazy
14.01.2002, 23:18
Абсолютно верно. Проверка валидности мыла в общем случае невозможна. Да и нафиг? Проверка "похоже на мыло" делается лишь чтобы уберечь заполняющего форму от опечаток.

technic
15.01.2002, 01:18
Я сам столкнулся недавно с такой штукой. Оказывается все не так сложно. Проверяется через регулярные выражения.
Конечно не существование конкретного мэйла, а корректность ввода по шаблону ^.+@.+\..+$

MrGarry
15.01.2002, 11:04
Спасибо ВАМ, за то что откликнулись. Про такую проверку знаю, сам делаю.
Есть же ведь, сайты при заполнении формы они проверяют реальность мыла (я не совсем понимаю механизм :( ).
Подумал может, кто такое уже реализовал или знает как.

Будем искать... может найду...

Crazy
15.01.2002, 11:09
Ты можешь назвать пример такого сайта?

Pr0Head
15.01.2002, 11:17
Не так давно помоему этот вопрос уже тут поднимался. Все адреса проверить не получится т.к. не все почтовые службы могут отвечать на запрос о существовании конкретного е-мыла. Делается это специально, во избежании спама...

MrGarry
15.01.2002, 16:09
~ больше года назад, видел... что-то бесплатное, то ли бонусы зарабатывать было нужно, то ли рассылать письма надо было...
НО при регистрации надо было заплнять форму ВОТ в ней и стояла проверка на "реальность мыла". Кажется адресов 10 ради хохмы (проверял на левых) перепробовал... давно было.

Значит это не реально, если сами почтовики ответа "толкового" не дают :( на левый e-mail.
Хорошо, тогда подскажите - какой лучший способ для того что бы убедится в сущ. e-mail-a.
1. Послать письмо для подт. регистрации.
2. Знаю, что можно припихать код (на чем не знаю МОЖЕТ КТО ЗНАЕТ) после просмотра пересылает письмо отправителю.

3. ....... Ваше предложение.....

джагги на работе
16.01.2002, 11:59
вроде есть какя-то база с которой скрипт соединяется и проверяет мыл. надо узнать

MrGarry
16.01.2002, 12:25
Если узнаешь, то напиши.... ОК?

Спасибо.

Pr0Head
16.01.2002, 12:31
Мечта спамера: Получить доступ к базе данных е-мыльных адресов во всем интернете... :p

джагги на работе
16.01.2002, 13:21
угу. было бы здорово !

Crazy
16.01.2002, 14:19
Оригинал написал(а) джагги на работе
вроде есть какя-то база с которой скрипт соединяется и проверяет мыл. надо узнать

Чудес не бывает. Это я говорю как админ почтового сервера. :)

Crazy
16.01.2002, 14:21
...можно, в принципе, проверить доменную часть e-mail'а -- справа от собаки. Если в DNS'е прописан MX на этот домен, то есть шанс , что такой e-mail существует.

MrGarry
16.01.2002, 16:30
... можно и домен проверять, знать бы как :confused: ??? :confused: .....если подскажете.......

но это дает все же дает большую вероятность появления в БД левого мыла....
мда... :( чудес не бывает мы их делаем сами...

Crazy
16.01.2002, 17:36
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 "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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: &lt;{$Email}&gt;<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: &lt;{$Email}&gt;<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;
}
?>