how do I verify an valid email address without send a message to it? and also url address.
Thank in advance if you can help me.
Best Regards,
Freddie
How to verify an email address?
Moderator: General Moderators
Here's a function I use to open a socket to the domain ( I took this from someone's post a while back but didn't take the name, so respect to them).
Hope it helps
Code: Select all
function validateEmail ( $email )
{
global $SERVER_NAME;
$return = array ( false, "" );
list ( $user, $domain ) = split ( "@", $email, 2 );
$tld = $domain;
if ( checkdnsrr ( $tld, "MX" ) )
{
if ( getmxrr ( $tld, $mxhosts, $weight ) )
{
for ( $i = 0; $i < count ( $mxhosts ); $i++ )
{
$fp = fsockopen ( $mxhostsї$i], 25 );
if ( $fp )
{
$s = 0;
$c = 0;
$out = "";
set_socket_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{
$s = 0;
$out = "";
$c++;
}
else if ( ( $c > 0 ) && ( $out == "" ) )
{ break; }
else
{ $s++; }
if ( $s == 9999 ) { break; }
} while ( $out == "" );
set_socket_blocking ( $fp, true );
fputs ( $fp, "HELO $SERVER_NAME\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "MAIL FROM: $output = fgets ( $fp, 2000 );
fputs ( $fp, "RCPT TO: <$email>\n" );
$output = fgets ( $fp, 2000 );
if ( ereg ( "^250", $output ) )
{
$returnї0] = true;
}
else
{
$returnї0] = false;
$returnї1] = $output;
}
fputs ( $fp, "QUIT\n" );
fclose( $fp );
if ( $returnї0] == true )
{ break; }
}
}
}
}
return $return;
}email-validate
for the whole thing: http://www.ietf.org/rfc/rfc0821.txt
and then the code:
and then the code:
Code: Select all
<?
function validateEmail ( $email )
{
global $SERVER_NAME;
$return = array ( false, "" );
list ( $user, $domain ) = split ( "@", $email, 2 );
$tld = $domain;
if ( checkdnsrr ( $tld, "MX" ) )
{
if ( getmxrr ( $tld, $mxhosts, $weight ) )
{
for ( $i = 0; $i < count ( $mxhosts ); $i++ )
{
$fp = fsockopen ( $mxhostsї$i], 25 );
if ( $fp )
{
$s = 0;$c = 0;$out = "";
set_socket_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{ $s = 0;$out = "";$c++; }
else if ( ( $c > 0 ) && ( $out == "" ) )
{ break; }
else
{ $s++; }
if ( $s == 9999 )
{ break; }
}while ( $out == "" );
set_socket_blocking ( $fp, true );
fputs ( $fp, "HELO $SERVER_NAME\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "MAIL FROM:\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "RCPT TO: <$email>\n" );
$output = fgets ( $fp, 2000 );
if (( ereg ( "^250", $output ) ) || //ok
( ereg ( "^552", $output ) ) || //quota full
( ereg ( "^551", $output ) )) //ok, but forwarding
{ $returnї0] = true; }
else
{ $returnї0] = false;}
$returnї1] = $output;
fputs ( $fp, "QUIT\n" );
fclose( $fp );
if ( $returnї0] == true )
{ break; }
}
}
}
}
return $return;
}
if (isset ($email))
{
$ret= validateEmail($email);
echo "<br>Validated: ";
if ($retї0]) echo "YES. ";
else echo "NO. ";
echo "( $retї1].)";
}
else
{
echo "Please give an email addres (email_validate.php?email=xy@somewhere.com)";
}
?>this works with more SMTP servers
Code: Select all
<?
function validateEmail ( $email )
{
global $SERVER_NAME;
$return = array ( false, "" );
list ( $user, $domain ) = split ( "@", $email, 2 );
$tld = $domain;
if ( $returnї0] = checkdnsrr ( $tld, "MX" ) )
{
if ( getmxrr ( $tld, $mxhosts, $weight ) )
{
for ( $i = 0; $i < count ( $mxhosts ); $i++ )
{
$fp = fsockopen ( $mxhostsї$i], 25 );
if ( $fp )
{
$s = 0;$c = 0;$out = "";
socket_set_blocking ( $fp, false );
do
{
$out = fgets ( $fp, 2500 );
if ( ereg ( "^220", $out ) )
{ $s = 0;$out = "";$c++; }
else if ( ( $c > 0 ) && ( $out == "" ) )
{ break; }
else
{ $s++; }
if ( $s == 9999 )
{ break; }
}while ( $out == "" );
socket_set_blocking ( $fp, true );
fputs ( $fp, "HELO $SERVER_NAME\n" );
$output = fgets ( $fp, 2000 );
//method -one-
fputs ( $fp, "MAIL FROM:<>\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "RCPT TO: <$email>\n" );
$output = fgets ( $fp, 2000 );
$returnї1] = "RCPT TO: <$email>".$output;
if (( !ereg ( "^250", $output )) &&
( !ereg ( "^550", $output )) &&
( !ereg ( "^552", $output )) && //quota full
( !ereg ( "^251", $output ))) //user not known
{
//try this
fputs ( $fp, "RSET\n" );
$output = fgets ( $fp, 2000 );
fputs ( $fp, "VRFY: $user\n" );
$output = fgets ( $fp, 2000 );
$returnї1] = $returnї1]." VRFY: $user ".$output;
}
if (( ereg ( "^250", $output ) ) || //ok
( ereg ( "^251", $output ) ) || //not a local user, forwarded
( ereg ( "^552", $output ) )) //quota full
{ $returnї0] = true; }
else
{ $returnї0] = false;}
fputs ( $fp, "QUIT\n" );
fclose( $fp );
if ( $returnї0] == true )
{ break; }
}
}
}
}
else
{
$returnї1] = "no such domain!!";
}
return $return;
}
if (isset ($email))
{
$ret= validateEmail($email);
echo "<br>Validated: ";
if ($retї0]) echo "YES. ";
else echo "NO. ";
echo "( $retї1].)";
}
else
{
echo "Please give an email addres (email_validate.php?emial=xy@somewhere.com)";
}
?>