Prueba esta funcion muy acertada para lo que deseas:
Código PHP:
// FUNCION VALIDAR CORREO.
function check_email_address($email)
{
// PRIMERO CHECAR QUE HAY UN SOLO SIMBOLO @ Y QUE LOS DEMAS SEAN LARGOS.
if(!ereg("^[^@]{1,64}@[^@]{1,255}$", $email))
{
// CORREO INVALIDO POR NUMERO INCORRECTO DE CARACTERES , O NUMERO INCORRECTO DE SIMBOLOS @
return false;
}
// SE DIVIDE EN PARTES PARA HACERLO MAS SENCILLO.
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for($i = 0; $i < sizeof($local_array); $i++)
{
if(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
{
return false;
}
}
// SE REVISA SI EL DOMINIO ES UNA IP. SI NO, DEBE SER UN NOMBRE DE DOMINIO VALIDO
if(!ereg("^\[?[0-9\.]+\]?$", $email_array[1]))
{
$domain_array = explode(".", $email_array[1]);
if(sizeof($domain_array) < 2)
{
return false; // NO SON SUFICIENTES PARTES O SECCIONES PARA SER UN DOMINIO.
}
for($i = 0; $i < sizeof($domain_array); $i++)
{
if(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i]))
{
return false;
}
}
}
return true;
}
Y validas el correo de esta manera
Código PHP:
if(check_email_address($mail))
{
// envias el mensaje
}
else
{
echo "la direccion de correo electronico no es valida";
echo "<a href = 'formulario.php'>Volver</a>";
exit();
}
Saludos.