Foros del Web » Programando para Internet » PHP »

saber si una direccion de mail existe

Estas en el tema de saber si una direccion de mail existe en el foro de PHP en Foros del Web. Se puede verificar con PHP? He visto algunos sistemas que parecen detectar si uno ingresa una direccion falsa, incluso si el dominio es válido y ...
  #1 (permalink)  
Antiguo 16/01/2012, 00:05
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años, 1 mes
Puntos: 1
saber si una direccion de mail existe

Se puede verificar con PHP?
He visto algunos sistemas que parecen detectar si uno ingresa una direccion falsa, incluso si el dominio es válido y esta corriendo un servidor de correos, me pregunto como funciona.
Gracias de antemano.
  #2 (permalink)  
Antiguo 16/01/2012, 07:04
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: saber si una direccion de mail existe

Ahí te mando un ejemplito comentado en castellano, saludos:


Código PHP:
Ver original
  1. <?php
  2. /**
  3.  */
  4. function validareMail($xEmail) {
  5.     /**
  6.      * Validez de la dirección
  7.      */
  8.     $xValid = true;
  9.     /**
  10.      * Posición de la arroba en la dirección para obtener dirección y dominio
  11.      */
  12.     $atPos = strrpos($xEmail, '@');
  13.     //Si $atPos es booleana Y es falso entonces no es email
  14.     if (is_bool($atPos) && !$atPos) {
  15.         $xValid = false;
  16.     } else {
  17.         /**
  18.          * El dominio, la parte posterior desde la posición de arroba
  19.          */
  20.         $xDomain = substr($xEmail, $atPos + 1);
  21.         /**
  22.          * Idem anterior para la dirección
  23.          */
  24.         $xAddr = substr($xEmail, 0, $atPos);
  25.         /**
  26.          * La longitud de la direccion
  27.          */
  28.         $xAddrLen = strlen($xAddr);
  29.         /**
  30.          * La longitud del dominio
  31.          */
  32.         $xDomainLen = strlen($xDomain);
  33.         //La dirección ha de ser >1 y <64
  34.         if ($xAddrLen < 1 || $xAddrLen > 64) {
  35.             $xValid = false;
  36.             //el dominio >1 y <64
  37.  
  38.         } else if ($xDomainLen < 1 || $xDomainLen > 255) {
  39.             $xValid = false;
  40.             //Validación mediante expresiones regulares, no puede contener punto al comienzo
  41.  
  42.         } else if ($xAddr[0] == '.' || $xAddr[$xAddrLen - 1] == '.') {
  43.             $xValid = false;
  44.             //No puede contener barras // o \\
  45.  
  46.         } else if (preg_match('/\\.\\./', $xAddr)) {
  47.             $xValid = false;
  48.         } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $xDomain)) {
  49.             $xValid = false;
  50.         } else if (preg_match('/\\.\\./', $xDomain)) {
  51.             $xValid = false;
  52.         } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $xAddr))) {
  53.             if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $xAddr))) {
  54.                 $xValid = false;
  55.             }
  56.         }
  57.         //Debe existir el dominio
  58.         if ($xValid && !(checkdnsrr($xDomain, 'MX') || checkdnsrr($xDomain, 'A'))) {
  59.             $xValid = false;
  60.         }
  61.     }
  62.     return $xValid;
  63. }
  64. /**
  65.  * Implementación
  66.  */
  67. $email = "[email protected]";
  68. if (!validareMail($email)) {
  69.     echo "Email $email es incorrecto";
  70. } else {
  71.     echo "$email es correcto";
  72. }
  73. $email = "[email protected]";
  74. if (!validareMail($email)) {
  75.     echo "<br>Email $email es incorrecto";
  76. } else {
  77.     echo "<br>$email es correcto";
  78. }
  79. ?>
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 16/01/2012, 07:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años, 1 mes
Puntos: 1
Respuesta: saber si una direccion de mail existe

Hola Repara gracias por el script pero segun veo solo verifica el formato de la direccion de correo ingresada, cierto?

Mi consulta va más allá, como decía antes, me refiero a verificar que usuario exista en el servidor de mail de dominio, se entiende?
  #4 (permalink)  
Antiguo 16/01/2012, 07:55
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: saber si una direccion de mail existe

La función verifica que el dominio exista. Lo que tú quieres se puede hacer con la API del servidor, si la ofrece, o con alguna classe tipo phpmailer o similar.

http://www.phpclasses.org/search.htm...=0&go_search=1

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: direccion, mail
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:30.