java - verificacion - ¿Cómo comprobar la dirección de correo existe o no?
verificar si cuenta existe (2)
Estoy enviando un correo electrónico a través de Java utilizando com.sun.mail.smtp.SMTPTransport .
Tengo éxito en enviar el correo electrónico, pero SMTPTransport no da ningún error si envío el correo a una dirección de correo electrónico no válida.
¿Hay alguna forma de verificar que la dirección de correo dada existe o no?
No quiero verificar la dirección de correo como parte del cliente , necesito verificar como parte del servidor .
Encontré muchas preguntas como esta en muchos foros, pero no obtengo ninguna solución adecuada.
Mi código es -
String email = "[email protected]";
Properties props = new Properties();
props.put("mail.smtps.host", "mail.myDomain.com");
props.put("mail.smtps.auth", "true");
Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("Mail Demo <[email protected]>"));
msg.setRecipients(Message.RecipientType.TO, email);
msg.setSubject("Mail Example");
msg.setSentDate(new Date(System.currentTimeMillis()));
String txt = "Message Body";
msg.setText(txt);
SMTPTransport st = (SMTPTransport)session.getTransport("smtps");
st.connect("mail.myDomain.com","[email protected]","password");
st.sendMessage(msg, msg.getAllRecipients());
System.out.println("ServerResponse : " + st.getLastServerResponse());
Da salida para direcciones de correo electrónico válidas y no válidas: - 250 ID de OK = 1TbWgN-0007oY-8r
Por favor ayúdame a resolver el problema. Gracias por adelantado.
Gracias a todos por sus respuestas.
Soy capaz de resolver mi problema a través de la verificación de registros MX .
Utilicé este Link para resolver el problema. Que esto también sea útil para alguien.
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial",
"com.sun.jndi.dns.DnsContextFactory");
DirContext ictx = new InitialDirContext( env );
Attributes attrs = ictx.getAttributes
( hostName, new String[] { "MX" });
Attribute attr = attrs.get( "MX" );
if (( attr == null ) || ( attr.size() == 0 )) {
attrs = ictx.getAttributes( hostName, new String[] { "A" });
attr = attrs.get( "A" );
if( attr == null )
throw new NamingException
( "No match for name ''" + hostName + "''" );
}
Gracias.
La única forma de confirmar una dirección de correo electrónico es enviándole un correo electrónico y exigiéndole al usuario que siga un enlace (único) en el correo electrónico a su sitio web.