entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Comprobar si un correo existe (no sólo si tiene formato válido) en Android

Buenas, estoy desarrollando una app que guarda correos de los usuarios mediante un formulario para usarlos posteriormente en una campaña de mailing, mi idea inicial era comprobar si los correos tienen un formato válido con expresiones regulares.

Pero quiero ir más allá y comprobar si el correo existe, buscando por internet he encontrado webs que lo hacen y algún script (https://github.com/0verl0ad/0verCheck).

Necesitaría algún código java para incluir en mi app nativa o algún script que se pueda incluir en un proyecto android (por ejemplo js).
¿Alguno habéis tenido este problema antes?

Saludos y gracias de antemano =)

1 Respuesta

0voto

Leonardo-Tadei Puntos227320

Hola kratos91,

para validar si un correo existe, la única forma es preguntando al servidor que maneja la cuenta, para lo cual tenés que iniciar una comunicación SMTP con el servidor como si enviaras un e-mail, o más simplemente, enviando un e-mail para ahorrarte tener que implementar el protocolo.

Si la cuenta no existe, el servidor SMTP responderá indicándolo en respuesta al comando RCPT TO . Esto an casos de que el SMTP sea un proxy puede dar siempre verdadero, pero son casos exepcionales.

Para enviar un e-mail desde Android fijate en http://sekthdroid.wordpress.com/2013/02/09/enviar-email-desde-una-activity-android/ o en http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-built-in-a en dónde se ilustran dos formas distintas de hacerlo.

Si querés ver como es la secuencia de conexión con un servidor SMTP, tenés los comandos y un ejemplo acá http://systemadmin.es/2009/01/como-mandar-un-email-con-telnet-protocolo-smtp, pero este mecanismo no es viable actualmente porque los servidores SMTP usan autentificación, TLS y varias cosas que no son texto plano.

Nota: enviar un e-mail valida que la cuenta exista, pero no que sea de quien la ingresa. Para esto tendrías que enviar un código de validación y tener un lugar en dónde el usuario lo escriba para validar que sí sea su cuenta.

Saludos!

0voto

kratos91 comentado

Hola leonardo,

Gracias por tu respuesta, me ha ayudado a comprender mejor el problema.

En este caso no tiene sentido hacer una autentificación. La app recoge los correos de los clientes y a cambio les permite acceder al contenido de la app. La idea es evitar que los usuarios introduzcan correos del tipo [email protected], para aumentar el valor de la campaña de mailing posterior. Pero no sería funcional que cada uno tuviera que autentificarse para acceder al contenido (la app se colgará como punto de información de un negocio).

Saludos :)

0voto

kratos91 comentado

He encontrado una pregunta en stackoverflow que lleva un año activa y no ha conseguido respuesta:
http://stackoverflow.com/questions/13319622/verify-if-an-email-address-exists-or-not

Otras preguntas dan posibles soluciones pero sin garantías..

Así que utilizaré expresiones regulares para comprobar el patrón. Con eso debería bastar.

0voto

Leonardo-Tadei comentado

Hola kratos91,

a veces 'suficientemente bueno' es mejor que 'excelente'. Hoy tampoco sirve ni siquiera validar que la cuenta exista y sea del que la ingresa, porque servicios como www.10minutemail.com o www.yopmail.com permiten hacer esto con cuentas descartables.

Después en la campaña de marketing depurarán los datos para ver cuales son reales... es algo muy habitual.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta