JavaMail validar si existe el dominio de una cuenta de correo
Hola comunidad, como les va?
Aquí estoy con una curiosidad sobre JavaMail. La curiosidad es cómo saber si la cuenta de correo a la que voy a enviar un correo existe o no?
Leí en mucnos foros y en la misma API de JavaMail que saber si existe la cuenta de correo es imposible, pero lo que si es posible es al menos identificar si el dominio de la cuenta existe. Pongamos un ejemplo.
From: administrador@empresa.com
To: usuariox@dominioequivocado.com
Subject: Bienvenido!
Message: Bienvenido personaX
Como ven la cuenta de correo a la que quiero enviar un correo es de "DUDOSA PROCEDENCIA" por así decirlo, lo que yo quiero hacer es darme cuenta desde antes de enviar el mensaje o al enviarlo con alguna excepción de si esa cuenta por lo menos tiene un dominio valido.
Lo que hace hasta ahorita la aplicación es como todo enviar el correo y de retorno me llega un correo a mi cuenta de administrador un mail donde me dice que no se pudo enviar a esa cuenta que por que ni existe!
Alguién a tratado con este problema o le ha visto alguna solución o de plano no se puede? Bienvenidas las sugerencias :D
Estoy usando JavaMail 1.4.3 con el JAF que viene en la versión 6 de java
- Inicie sesión o regístrese para enviar comentarios
Dudo que se pueda
Realmente dudo que se pueda, sinembargo me están pidiendo que lo haga jaja chale y eso que mi boOss es Arq. en Java
no se puede
No es limitante de JavaMail sino de la manera en que funciona el email. JavaMail usa SMTP para enviar correos, pero se conecta al servidor que tú le dices, donde tú tienes tu cuenta, porque ahí te valida a ti; recibe el correo que quieres enviar y te dice OK pero en ese momento no se ha enviado nada todavía; el correo se encola y se envía poco tiempo después. La manera en que se envía es bastante complicada, porque puede pasar por toda una serie de servidores intermedios antes de llegar a su destino. Similar a como funciona el correo real; tú mandas una carta y pasa por varios lugares, tal vez en el camino validan el código postal y cosas así, pero si pusiste mal el número de la casa por ejemplo, solamente lo sabrá el cartero cuando vaya a entregar la carta y se da cuenta que no existe, por lo que tienen que regresar la carta al remitente. Eso mismo pasa con el email; se va pasando del servidor donde tú te conectarse via SMTP, a otro servidor, y de ahí a otro, etc hasta que alguno ya se conecta directo al servidor de correo de dominioequivocado.com; si ese servidor de correo no conoce a usuariox entonces devuelve el correo y por eso te llega el mensaje después.
Para saber si el dominio existe, tendrías que validarlo con tu DNS, hacer un whois o algo asi, no tengo idea cómo se haga desde Java. Pero que el dominio exista no quiere decir que hay un servidor de correo configurado para él ni que exista el usuario. Y tu jefe será muy arquitecto en Java pero esto es conocimiento básico de protocolos de internet, que también es muy necesario para su puesto, aunque hoy en día cualquiera se puede hacer llamar arquitecto porque leyó unos cuantos libros y ya tiene algo de experiencia desarrollando. Pero... un albañil que lleva 20 años poniendo ladrillos tal vez sea el mejor para poner ladrillos y hacer mezcla, pero esa experiencia no lo convierte en un arquitecto. No sé por qué en sistemas muchos creen que porque ya llevan X años programando y trabajando en varios proyectos ya se pueden hacer llamar arquitectos.
Si se puede, pero... es peligroso si se abusa del mecanismo...
Pues me dio curiosidad y lo busque en google y sorprendentemente, parece que si se puede en algunos casos, pero corres el riesgo (si preguntas demasiado seguido por direcciones de email incorrectas) de que el administrador del servidor de correos de donde quieres verificar considere que eres un spammer que esta queriendo encontrar correos validos para contaminarlos con basura, y bloquee tu dominio por un largo tiempo (e inclusive te denuncie en grupos anti-spam) lo que podria hacer que varios dominios te bloqueen, y ya no puedas enviarle mail a muchos lugares
Como ademas, el administrador del servidor de email puede simplemente desactivar el mecanismo de verificacion desde un principio, tendrias que manejar 3 estatus: direccion de correo correctas, direccion de correo erronea, y direccion de correo no verificable, esta ultima para los casos en los que no fue posible efectuar la verficacion.
Y queda ademas el problema de que tal vez algunos servidores de email tal vez este configurados para contestarte a todo con "si existe", con lo cual tampoco podras estar seguro si por que te dijeron que si significa que en verdad la direccion existe (tranquilamente te contestan primero que si, y luego te contestan que no se pudo). Para eso podrias manejar un estatus de fiabilidad del email server: Si te dijo que si, y en el futuro te contesto que no, entonces lo pasas un estatus de "no confiable".
Otra posibilidad es que te conteste que si existe, aunque no exista, y simplemente se trague el correo (algunos servers hacen eso), ahi si no hay escapatoria (que yo sepa)
bien
Estoy de acuerdo con lo que comentan ambos, de hecho a mi también me pareció muy raro vieniendo de alguién que se supone debe saber esto, es la primera vez que uso JavaMail y hasta para mi que no soy experta me sonó bastante ilógico, por que se entiende que JavaMail te permite hacer las conexiones y me diga ok si ese es tu usuario yo te hago la chamba generame la estructura de correo que necesitas y yo te la envío, pero precisamente y en la misma API lo aclara, justamente en la clase "InternetAddress" te permite establecer una cuenta de correo y te permite validarla y toda la cosa sinembargo claramente te asegura que el hecho de validar la sintáxis de la cuenta no te asegura que esa cuenta exista en el dominio que le estás especificando.
En fin ya cheque lo que comenta @luxspes y realmente no es una buena idea para lo que intento hacer. Pero es válida :p
Lo que yo le comenté a mi bOss fue precisamente que ni GMAIL ni HOTMAIL podían determinar eso por que demonios él me lo estaba pidiendo si suena bastante ilógico :D Creo que robaré la explicación de @ezamudio la de la carta y el cartero a ver si así agarra la onda jaja :p
Ayuda con dominio diferente
Hola buenos dias desde Mexico, tengo un problema mis amigos ya tengo todo corriendo con un servidor smtp.live.com y envio correos a hotmail, gmail y yahoo con datos adjuntos y todo desde java aplicado en un formulario jsp.
Ahora bien en mi trabajo (UNIVERSIDAD) tienen su propio dominio correo@dominio.edu.mx y al momento de mandar el correo pues no sabe que hacer el smtp.live.com mi pregunta es ¿como configurar para que salga sobre una cuenta con ese dominio?
Agradeceria mucho su ayuda
Atte.
David Leon Baeza
@virus25
Crea otro tema, incluye código (entre tags de <code> y </code> por favor) y explica un poco más a detalle tu problema.