none
Validar la existencia de un correo electronico RRS feed

  • Pregunta

  • Buen día a todos

    Me encuentro en la necesidad de crear un script o aplicación que me verifique la existencia de correo electrónico, es decir, que realmente exista, esto lo requiero ya que en donde estoy entrando a trabajar tienen una bd no muy fiable, aparte de que el CRM que manejan no tiene una validación de correo hay muchos correos mal escritos, y quiera de esta bd agarrar esos correos y validar su existencia y si no que los borre.

    He buscando por la web y por lo que he visto necesito 

    Validar la dirección de correo

    Obtener el registro MX del dominio

    Nos conectaremos al servidor SMTP por los registros MX - 

    Basándonos en el código de la respuesta, comprobaremos si la dirección es válida, si el dominio es válido y la entrega del mensaje.

    Pero no tengo idea de como conectar a los MX y hacer los demás, si alguien me pudiera orientar o si alguien sabe de algún desarrollo ya hecho se los agradecere.

    Gracias buen día


    Chinoafro

    viernes, 6 de septiembre de 2019 16:01

Respuestas

  • Por desgracia (o tal vez afortunadamente), lo que quieres hacer se ha vuelto imposible hoy en día.

    El método "oficial" para validar una dirección es separar el dominio de la dirección, buscar el MX de ese dominio en el DNS, abrir una conexión al servidor indicado por el registro MX, y enviar el comando SMTP "VRFY" (abreviatura de Verify) para verificar el correo. Pero en la actualidad, la mayoría de los servidores no contestan al VRFY, para ponérselo más difícil a los spammers.

    La segunda alternativa es enviar un "MAIL FROM..." seguido de "RCPT TO..." y poner en el comando RCPT la dirección deseada. Si ahí te contesta un error diciendo que la dirección no existe, ya sabes que no era buena. De lo contrario, cierras la conexión sin enviar nada y no se transmite el mensaje. Pero es muy común que el servidor no te conteste con un error, sino que simplemente acepte la conexión y descarte los datos. Una vez más esto se hace para ponerles las cosas difíciles a los spammers.

    Todo eso se complica por el problema añadido de que (una vez más para evitar el spam), los servidores MX suelen rechazar las conexiones que vengan desde cualquier remitente que no esté suficientemente validado (hay "listas blancas" y "listas negras" para esto). Así que en su mayoría no admitirán estas consultas SMTP enviadas desde tu ordenador. Podrías enviarlas desde un servidor que hayas validado para que esté en las listas blancas... pero en cuanto detecten que estás intentando validar correos de esta manera, te pasarán a las listas negras y ya no podrás usar tu servidor.

    Otra forma alternativa e validar una dirección de correo es enviarle un mensaje. El contenido es HTML y dentro se embebe un <img> que en el src apunte a una dirección de un servidor web tuyo. En cuanto te llega una petición pidiendo esa imagen a tu servidor, sabes que el correo era válido porque el destinatario lo ha abierto. Pero una vez más, para evitar esto, los clientes de correo modernos (como por ejemplo el Outlook) de forma predeterminada no cargan las imágenes, y el usuario tiene que hacer click en una opción para que se carguen. Lógicamente el usuario no hace click si no te conoce y no reconoce tu mensaje como algo que le es útil.

    Así que, como ves, todo está en tu contra. Tú quieres validar las direcciones de correo, pero todo el resto de la internet se pone de acuerdo para hacer las cosas de tal manera que las direcciones no se puedan validar. Esto viene causado por el problema del spam, pero por desgracia también "salpica" a los usuarios con intenciones legítimas.

    • Marcado como respuesta chinoafro viernes, 6 de septiembre de 2019 18:39
    viernes, 6 de septiembre de 2019 17:55

Todas las respuestas

  • Por desgracia (o tal vez afortunadamente), lo que quieres hacer se ha vuelto imposible hoy en día.

    El método "oficial" para validar una dirección es separar el dominio de la dirección, buscar el MX de ese dominio en el DNS, abrir una conexión al servidor indicado por el registro MX, y enviar el comando SMTP "VRFY" (abreviatura de Verify) para verificar el correo. Pero en la actualidad, la mayoría de los servidores no contestan al VRFY, para ponérselo más difícil a los spammers.

    La segunda alternativa es enviar un "MAIL FROM..." seguido de "RCPT TO..." y poner en el comando RCPT la dirección deseada. Si ahí te contesta un error diciendo que la dirección no existe, ya sabes que no era buena. De lo contrario, cierras la conexión sin enviar nada y no se transmite el mensaje. Pero es muy común que el servidor no te conteste con un error, sino que simplemente acepte la conexión y descarte los datos. Una vez más esto se hace para ponerles las cosas difíciles a los spammers.

    Todo eso se complica por el problema añadido de que (una vez más para evitar el spam), los servidores MX suelen rechazar las conexiones que vengan desde cualquier remitente que no esté suficientemente validado (hay "listas blancas" y "listas negras" para esto). Así que en su mayoría no admitirán estas consultas SMTP enviadas desde tu ordenador. Podrías enviarlas desde un servidor que hayas validado para que esté en las listas blancas... pero en cuanto detecten que estás intentando validar correos de esta manera, te pasarán a las listas negras y ya no podrás usar tu servidor.

    Otra forma alternativa e validar una dirección de correo es enviarle un mensaje. El contenido es HTML y dentro se embebe un <img> que en el src apunte a una dirección de un servidor web tuyo. En cuanto te llega una petición pidiendo esa imagen a tu servidor, sabes que el correo era válido porque el destinatario lo ha abierto. Pero una vez más, para evitar esto, los clientes de correo modernos (como por ejemplo el Outlook) de forma predeterminada no cargan las imágenes, y el usuario tiene que hacer click en una opción para que se carguen. Lógicamente el usuario no hace click si no te conoce y no reconoce tu mensaje como algo que le es útil.

    Así que, como ves, todo está en tu contra. Tú quieres validar las direcciones de correo, pero todo el resto de la internet se pone de acuerdo para hacer las cosas de tal manera que las direcciones no se puedan validar. Esto viene causado por el problema del spam, pero por desgracia también "salpica" a los usuarios con intenciones legítimas.

    • Marcado como respuesta chinoafro viernes, 6 de septiembre de 2019 18:39
    viernes, 6 de septiembre de 2019 17:55
  • Hola    chinoafro

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comento que para  que la comunidad de foros te pueda asesorar mejor, es necesario que nos compartas el form/code que estás desarrollando

     

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 6 de septiembre de 2019 18:25
  • :( que mal seguiré buscando muchas gracias por tu ayuda

    Chinoafro

    viernes, 6 de septiembre de 2019 18:39