Check the e-mail address's existence with PHP

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
drewnik
Forum Newbie
Posts: 1
Joined: Sun Oct 04, 2009 7:19 am

Check the e-mail address's existence with PHP

Post by drewnik »

I've used this class, from phpclasses, for check the e-mail address's existence, but there was a problem:

Code: Select all

 
define ('DEBUG_OK', false); 
class CCheckMail 
{ 
var $timeout = 10; 
var $domain_rules = array ("aol.com", "bigfoot.com", "brain.net.pk", "breathemail.net", 
"compuserve.com", "dialnet.co.uk", "glocksoft.com", "home.com", 
"msn.com", "rocketmail.com", "uu.net", "yahoo.com", "yahoo.de"); 
 
function _is_valid_email ($email = "") 
{ return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email); } 
 
function _check_domain_rules ($domain = "") 
{ return in_array (strtolower ($domain), $this->domain_rules); } 
 
function execute ($email = "") 
{ 
if (!$this->_is_valid_email ($email)) 
{ return false; } 
 
$host = substr (strstr ($email, '@'), 1); 
 
if ($this->_check_domain_rules ($host)) 
{ return false; } 
 
$host .= "."; 
 
if (getmxrr ($host, $mxhosts[0], $mxhosts[1]) == true) 
{ array_multisort ($mxhosts[1], $mxhosts[0]); } 
else 
{ 
$mxhosts[0] = $host; 
$mxhosts[1] = 10; 
} 
if (DEBUG_OK) { print_r ($mxhosts); } 
 
$port = 25; 
$localhost = $_SERVER['HTTP_HOST']; 
$sender = 'info@' . $localhost; 
 
$result = false; 
$id = 0; 
while (!$result && $id < count ($mxhosts[0])) 
{ 
if (function_exists ("fsockopen")) 
{ 
if (DEBUG_OK) { print_r ($id . " " . $mxhosts[0][$id]); } 
 
if ($connection = fsockopen ($mxhosts[0][$id], $port, $errno, $error, $this->timeout)) 
{ 
fputs ($connection,"HELO $localhost\r\n"); 
$data = fgets ($connection,1024); 
$response = substr ($data,0,1); 
 
if (DEBUG_OK) { print_r ($data); } 
 
if ($response == '2')
{ 
fputs ($connection,"MAIL FROM:<$sender>\r\n"); 
$data = fgets($connection,1024); 
$response = substr ($data,0,1); 
if (DEBUG_OK) { print_r ($data); } 
 
if ($response == '2')
{ 
fputs ($connection,"RCPT TO:<$email>\r\n"); 
$data = fgets($connection,1024); 
$response = substr ($data,0,1); 
if (DEBUG_OK) { print_r ($data); } 
 
if ($response == '2')
{ 
fputs ($connection,"data\r\n"); 
$data = fgets($connection,1024); 
$response = substr ($data,0,1); 
if (DEBUG_OK) { print_r ($data); } 
 
if ($response == '2')
{ $result = true; } 
} 
} 
} 
 
fputs ($connection,"QUIT\r\n"); 
fclose ($connection); 
if ($result) { return true; } 
} 
} 
else 
{ break; } 
$id++; 
} 
return false; 
} 
}
 
Since all mails is not valid, I've tried to "print" some variables. The result of $data is that the method HELO is not supported.
Someone would be able to help me?
Thank you very much.
SidewinderX
Forum Contributor
Posts: 407
Joined: Fri Jul 16, 2004 9:04 pm
Location: NY

Re: Check the e-mail address's existence with PHP

Post by SidewinderX »

Possible because your host does not support SMTP.
Post Reply