web-dev-qa-db-fra.com

Comment vérifier que l'adresse e-mail existe ou non?

J'envoie un e-mail via Java utilisant com.Sun.mail.smtp.SMTPTransport.

J'ai réussi à envoyer l'e-mail, mais SMTPTransport ne donnant aucune erreur si j'envoie l'e-mail à une adresse e-mail non valide.

Existe-t-il un moyen de vérifier que l'adresse e-mail donnée existe ou non?

Je ne veux pas vérifier l'adresse e-mail comme côté client, je dois vérifier comme côté serveur.

J'ai trouvé de nombreuses questions comme celle-ci sur de nombreux forums, mais je n'obtiens aucune solution appropriée.

Mon code est -

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());

Il donne une sortie pour l'adresse email valide et invalide: - 250 OK id = 1TbWgN-0007oY-8r

Veuillez m'aider à résoudre le problème. Merci d'avance.

22
Deepu

Merci à tous pour vos réponses.

Je suis en mesure de résoudre mon problème via la vérification des enregistrements MX .

J'ai utilisé ceci Link pour résoudre le problème. Que cela soit également utile pour quelqu'un.

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 + "'" );
}

Je vous remercie.

23
Deepu

La seule façon de confirmer une adresse e-mail est de lui envoyer un e-mail et de demander à l'utilisateur de suivre un lien (unique) dans l'e-mail vers votre site Web.

8
Quentin