Puedes hacer una comprobacion más a fondo, mirando si existen registros MX para el dominio del email. Asi por ejemplo si ponen [email protected] con el script del #2 te dira q si existe, pero con el que te digo ahora te dira que no, xque "esteemailesfalso.com" no es un dominio existente con registros MX.
Aquí va (esta sakado de otra web, creo que de un comentario de php.net):
function check_email_mx($email) {
if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(.)/', $email)) ||
(preg_match('/.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
$email = "[email protected]";
if (!check_email_mx($email)) echo "Correo invalido";
---------------------------------------------