Muchas veces nos preguntamos si el mail que nos ponen en un formualrio es valido, osea que existe, pues bien con esta funcion podemos comprobar si este mail existe, y si este esta escrito correctamente
Código PHP:
<?
function ValidarMail($email) {
global $HTTP_HOST;
$resultado = array();
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,6}$",$email)) {
$resultadoado[0]=false;
$resultado['code']="702";
return $resultado;
}
list ( $Username, $dominio ) = split ("@",$email);
if (getmxrr($dominio, $MXHost)) $conecta_dominio = $MXHost[0];
else $conecta_dominio = $dominio;
$conectar = fsockopen ( $conecta_dominio, 25 );
if ($conectar) {
if (ereg("^220", $ver = fgets($conectar, 1024))) {
fputs ($conectar, "HELO $HTTP_HOST\r\n");
$ver = fgets ( $conectar, 1024 );
fputs ($conectar, "MAIL FROM: <{$email}>\r\n");
$From = fgets ( $conectar, 1024 );
fputs ($conectar, "RCPT TO: <{$email}>\r\n");
$To = fgets ($conectar, 1024);
fputs ($conectar, "QUIT\r\n");
fclose($conectar);
if (!ereg ("^250", $From) || !ereg ( "^250", $To )) {
$resultado[0]=false;
$resultado['code']="700";
return $resultado;
}
}
else {
$resultado[0] = false;
$resultado['code'] = "Død";
return $resultado;
}
}
else {
$resultado[0]=false;
$resultado['code']="701";
return $resultado;
}
$resultado[0]=true;
$resultado['code']="200";
return $resultado;
} //fin funcion
/// la funcion superior se puede usar en unix pero en windows XP,200,NT
//hay que utilizar la funcion que sigue pues windows no soporta la funcion getmxrr, (en win 9X no funcionaria )
/// esta funcion es aportada por irondan_2358
function getmxrr($hostname, &$mxhosts)
{
$mxhosts = array();
exec('nslookup -type=mx '.$hostname, $result_arr);
foreach($result_arr as $line)
{
if (preg_match("/.*mail exchanger = (.*)/", $line, $matches))
$mxhosts[] = $matches[1];
}
return( count($mxhosts) > 0 );
// la un
}
Espero que os sea de utilidad
Saludos