java - 如何检查邮件地址是否存在?

标签 java email smtp mime-message

我正在使用 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

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

最佳答案

感谢大家的回复。

我可以通过 MX 记录检查 解决我的问题。

我用过这个 Link 来解决问题。希望这对某人也有用。

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

谢谢。

关于java - 如何检查邮件地址是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514005/

相关文章:

java - (Java) 静态泛型方法与泛型类静态方法

java - DateFormat 与 Country Locales 问题

javascript - 如何将 "to"字段(在电子邮件 header 中)设置为群组电子邮件地址?

C# - 通过 Gmail 或其他方式发送电子邮件?

java - 客户端未通过身份验证,无法在 MAIL FROM 期间发送匿名邮件

java - 如何使用带有 OAuth2 身份验证的 Gmail SMTP 使用 java 邮件发送邮件?

java - Spring -MongoDB

java - 我有一个离线 SQLite 数据库,我想使其在线并使用它

python - 将电子邮件消息解析为可读形式的 Python

excel - 发送带附件的电子邮件的 VBA 循环还包括所有以前迭代的附件