I'm trying to do email verification and I can't seem to get it going. At present it would make the connection to the domain but after that it seems to time out. Does anyone know why this is? It seems to be hanging here:
$res=fgets($connection, "EHLO $mydomain
");
Would anyone be able to inform me as to why this is? My code is below:
if(isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
// Could get this from the php ini?
$from="xxxx@xxxx-int.net";
$to=$_POST['email'];
$subject="Test";
$message="Testing";
list($me,$mydomain) = split("@",$from);
// Now look up the mail exchangers for the recipient
list($user,$domain) = split("@",$to,2);
if(getmxrr($domain,$mx,$weight) == 0) return FALSE;
// Try them in order of lowest weight first
array_multisort($mx,$weight);
$success=0;
foreach($mx as $host) {
// Open an SMTP connection
$connection = fsockopen ($host, 25, $errno, $errstr, 1);
if (!$connection)
continue;
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "220") echo $res;
// Introduce ourselves
fputs($connection, "EHLO $mydomain
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Envelope from
fputs($connection, "MAIL FROM: $from
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Envelope to
fputs($connection, "RCPT TO: $to
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// The message
fputs($connection, "DATA
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "354") echo $res;
// Send To:, From:, Subject:, other headers, blank line, message, and finish
// with a period on its own line.
fputs($connection, "To: $to
From: $from
Subject: $subject
$message
.
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Say bye bye
fputs($connection,"QUIT
");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "221") echo $res;
// It worked! So break out of the loop which tries all the mail exchangers.
$success=1;
break;
}
// Debug for if we fall over - uncomment as desired
// print $success?"Mail sent":"Failure: $res
";
if($connection) {
if($success==0) fputs($connection, "QUIT
");
fclose ($connection);
}
return $success?TRUE:FALSE;
}