Como hay mucha función basura de este tipo dando vueltas, te dejo la que uso y me funciona bien (del lado de PHP).
Código PHP:
function emailValido($email){
return preg_match( "/^
[\d\w\/+!=#|$?%{^&}*`'~-]
[\d\w\/\.+!=#|$?%{^&}*`'~-]*@
[A-Z0-9]
[A-Z0-9.-]{1,61}
[A-Z0-9]\.
[A-Z]{2,6}$/ix", $email );
}
echo emailValido('[email protected]') ? 'Email correcto' : 'Email incorrecto';