How to check mail address is exists or not?

2019-07-04 01:35发布

我使用com.sun.mail.smtp.SMTPTransport通过Java发送电子邮件。

我成功发送电子邮件,但SMTPTransport不给任何错误,如果我将邮件发送到电子邮件地址无效。

有没有一种方法来检查给定的邮件地址是存不存在?

我不意味检查邮件地址作为客户端 ,我需要检查的服务器端

我发现很多论坛上很多这样的问题,但我没有得到任何适当的解决办法。

我的代码是 -

String email = "reciever@theirDomain.com";

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 <my_email@myDomain.com>"));
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","my_email@myDomain.com","password");
st.sendMessage(msg, msg.getAllRecipients());

System.out.println("ServerResponse : " + st.getLastServerResponse());

它使输出有效和无效EMAIL_ADDRESS: - 250 OK ID = 1TbWgN-0007oY-8R

请帮我解决这个问题。 提前致谢。

Answer 1:

谢谢大家的响应。

我能够通过MX记录检查 ,以解决我的问题。

我用这个链接来解决问题。 可能这也成为有用的人。

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

谢谢。



Answer 2:

确认电子邮件地址的唯一方法是发送电子邮件至,并要求用户按照电子邮件中的(唯一的)链接回你的网站。



文章来源: How to check mail address is exists or not?