Función en PHP para comprobar si un email es válido

Hoy he tenido que preparar una pequeña función en PHP para que compruebe si los emails son válidos. Está hecha usando expresiones regulares:

1
2
3
4
if (ereg("([A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z0-9_-]+)", $email, $resultado))
{
    echo $resultado[1];
}

Este sencillo script sólo admitirá emails que contengan letras y números, guiones y puntos, por ejemplo:

paco@email.com
paco.smith@email.com
paco.smith@mi.email.com
paco_smith@mi-email.com

y no admitirá emails con espacios o caracteres “extraños”.

Actualización: He corregido un pequeño un error en el patrón que hacía que aceptase emails con una barra invertida, como por ejemplo:

pa\co@email.com

4 thoughts on “Función en PHP para comprobar si un email es válido

  1. Hola. Lo que quería comprobar es que hay algunos formularios en los que se verifica que la dirección realmente exista, pero en otros como éste, solo se basan en patrones: que tenga arroba, dominio, punto, pero la dirección puede no existir.

  2. Este ejemplo era precisamente para eso, para verificar si el email tiene un formato válido. Comprobar que el email existe realmente es algo más complicado; más o menos la idea sería hacer que nuestro script conecte con el servidor destino con nslookup para buscar información del servidor de correo. Luego, mediante telnet enviaríamos un comando para comprobar si existe. Tienes aquí esto bastante más detallado:

    http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/

    Tiene algunos inconvenientes, como que el servidor puede aceptar todos los emails como válidos y luego generar un email de rebote para los que no existen.

    Aquí tienes un script en Python para automatizar el proceso:

    http://gist.github.com/47987

Deja un comentario