Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查邮件地址是否存在?_Java_Email_Smtp_Mime Message - Fatal编程技术网

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

Java 如何检查邮件地址是否存在?,java,email,smtp,mime-message,Java,Email,Smtp,Mime Message,我使用com.sun.mail.smtp.SMTPTransport通过Java发送电子邮件 我成功发送电子邮件,但如果我将邮件发送到无效的电子邮件地址,则不会出现任何错误 有没有办法检查给定的邮件地址是否存在? 我不想将邮件地址检查为客户端,我需要检查为服务器端 我在许多论坛上发现了许多类似的问题,但我没有得到任何适当的解决方案 我的密码是- String email = "reciever@theirDomain.com"; Properties props = new Propertie

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

我成功发送电子邮件,但如果我将邮件发送到无效的电子邮件地址,则不会出现任何错误

有没有办法检查给定的邮件地址是否存在?

我不想将邮件地址检查为客户端,我需要检查为服务器端

我在许多论坛上发现了许多类似的问题,但我没有得到任何适当的解决方案

我的密码是-

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());
String电子邮件=”reciever@theirDomain.com";
Properties props=新属性();
put(“mail.smtps.host”、“mail.myDomain.com”);
props.put(“mail.smtps.auth”、“true”);
Session Session=Session.getInstance(props,null);
MimeMessage msg=新MimeMessage(会话);
msg.setFrom(新Internet地址(“邮件演示”);
msg.setRecipients(Message.RecipientType.TO,电子邮件);
msg.setSubject(“邮件示例”);
msg.setEntDate(新日期(System.currentTimeMillis());
String txt=“消息正文”;
msg.setText(txt);
SMTPTransport st=(SMTPTransport)session.getTransport(“smtps”);
st.connect(“mail.myDomain.com”,“我的_email@myDomain.com“,”密码“);
st.sendMessage(msg,msg.getAllRecipients());
System.out.println(“ServerResponse:+st.getLastServerResponse());
它提供有效和无效电子邮件地址的输出:- 250正常id=1TbWgN-0007oY-8r

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

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

感谢大家的回复

我可以通过检查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 + "'" );
}

谢谢。

你试过什么?我在你的代码中看不到任何东西来检查电子邮件地址的有效性/正确性。我会用正则表达式来做。define valid:你的意思是检查一封电子邮件是否真的对应于一个真实的邮箱,或者该电子邮件是否具有有效的语法?@jlordo谢谢你的回复。正则表达式仅检查电子邮件地址的格式是否有效。我想检查电子邮件地址是否存在。你可以试试amazon web服务,如果你的邮件发送到错误的邮件,添加它会引发异常,这不是最好的选择,但你可以给它一个try@HussainAkhtarWahid谢谢,但是我在哪里可以找到亚马逊网络服务?+1,“但这无助于识别临时的垃圾邮件地址。”昆汀感谢您的回复。我想注册,所以我想在Java.Deepu中使用它-我认为@Quentin试图告诉的是方法,它与语言(Java、C#等)无关。例如,当您在twitter上创建新帐户时,该站点会发送您在注册页面上提到的电子邮件。显然,您打开邮箱并单击链接以验证您是真正的用户。昆汀也提到了同样的方法,但与语言无关。@Steven ya我知道昆汀被提到的方式很好,与语言无关。但它是手动检查,这意味着接收者必须单击唯一的链接,我希望以编程方式通知邮件是否成功送达。@Deepu-你不会得到通知。这就是为什么答案从唯一的方法开始。一旦电子邮件到达目标服务器,发件人将失去与它的所有连接。服务器可以将其交付给用户。它可以把它当作垃圾邮件扔掉。它可以将其发送给用户,但用户最终证明是错误的用户,因为您收到了错误的电子邮件地址。等等。谢谢你的链接!我在您的链接中使用了该示例,但我得到了错误:找不到类javax.naming.directory.InitialDirContext。你也有同样的问题吗?我试过用Java6和OpenJDK,它对我来说很好,我没有遇到这样的问题。该类位于Java的核心库中。这适用于所有域吗?这是一个万无一失的方法吗?这段代码,检查域名的存在,例如:gmail.com,hotmail.com..,而不是电子邮件用户帐户!就像一个符咒,代码检查域名和地址,如果域存在