Inicio > PHP > Validar dominio email

VALIDAR DOMINIO EMAIL

24/11/2017PHP

 

Hace un tiempo escribí una entrada de como validar emails en php de una forma sencilla y evitar el uso de expresiones regulare.
En esta entrada voy a explicar si el email es válido, pero no en formato sino si la dirección email a la que se va a enviar el email existe o no.
En php existe una función que te dice si el dominio de un email existe o no. Esa función es checkdnsrr y devuelve true si el dominio existe y false si el dominio no existe.
La función requiere de dos parámetros, siendo el primero el dominio del email, lo que está detras de la arroba(@) y el segundo el tipo al que corresponde el dominio que pueden ser los siguientes valores:

  • MX : Definida en RFC y es el parámetro por defecto.
  • A : Definida en RFC.
  • ALL : Cualquiera de los tipos válidos.
  • CNAME:Definida en RFC.
  • MX: Mail Exchanger: Definida en RFC 1035.
  • NS: Definida en RFC 1035.
  • PTR: Definida en RFC 1035.
  • SOA: Definida en RFC 1035.
NOTA: No he visto demasiada información sobre los parámetros. Lo siento.

Ahora voy a poner un ejemplo sencillo:

list($prefix, $domain) = explode('@', $email);
var_dump(checkdnsrr($domain, 'MX'));

Pero para validar el dominio de un email hay otras funciones disponibles en php como dns_get_record que un array completo de los registros que puedes manipular con el DNS como por ejemplo el registro A, MX, NS, entre otras.
Otra función es dns_get_record y devuelve un array completo de los registros que puedes manipular con el DNS como por ejemplo el registro A, MX, NS, entre otras.
Otra función es getmxrr con la que solo se obtiene el registro MX del dominio.
De estas últimas funciones no he puesto ejemplo porque devuelven más información que un booleano y con la primera función explicada ya es suficente para comprobar que el dominio de un email funciona. Las otras funciones las he puesto a nivel informativo.