邮箱正确性验证源代码

来源:互联网 发布:制作电子相册软件 知乎 编辑:程序博客网 时间:2024/04/27 17:37
package com.test;


import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;




import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.Type;






public class Test {
public static boolean checkEmail(String email) { 
if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) { 
return false; 

String log = ""; 
String host = ""; 
String hostName = email.split("@")[1];// 去掉@后面的   
System.out.println("hostName:" + hostName); //验证源邮件服务器是否存在
Record[] result = null; 
SMTPClient client = new SMTPClient();//客户端封装对象 
try { 
// 查找MX记录 
Lookup lookup = new Lookup(hostName, Type.MX); 
lookup.run(); //寻找邮件服务器
if (lookup.getResult() != Lookup.SUCCESSFUL) { //lookup.getResult()返回的结果不成功,代表邮件服务器不存在
System.out.println("找不到MX记录"); 
return false; //返回false//如果网络情况不好,也可能是这种情况

} else { //否者按邮件服务器存在的情况处理

result = lookup.getAnswers(); //取得回应数组,也就是存在的邮件服务器的信息

/**
* 查看信息(邮件服务器信息)
*/
for (int i = 0; i < result.length; i++) { 
System.out.println(result[i].getAdditionalName().toString()); 
System.out.println(result[i]); 








// 连接到邮箱服务器 
for (int i = 0; i < result.length; i++) { 
host = result[i].getAdditionalName().toString(); 

client.connect(host); //链接到邮箱服务器,初始化客户端对象(推测内部是socket编程的封装)


if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) { 

client.disconnect(); 
continue; 

} else { 

log += "邮箱mx记录" + hostName + "存在"; 
log += "成功连接到" + host; 
break; 



System.out.println(client.getReplyString()+"--------------"+client.getReplyCode()); 

//以上是判断是否成功链接到服务器

client.login("qq.com"); 

System.out.println(client.getReplyString()+"--------------"+client.getReplyCode()); 

client.setSender("875509551@qq.com");// 发件人,要搞明白这个发件人的

log += "=" + client.getReplyString(); 

client.addRecipient(email); 

log += ">RCPT TO: <" + email + ">\n"; 
log += "=" + client.getReplyString(); 

if (250 == client.getReplyCode()) { 
return true; 
}  
} catch (Exception e) { 
e.printStackTrace(); 
//LOG.error(e.getMessage()); 
} finally { 
try { 
client.disconnect(); 
} catch (IOException e) { 

} // 打印日志 


return false; 
}

public static void main(String[] args) {
String email_String="56656565656565656@qq.com";
    
if(checkEmail(email_String)){
System.out.println("邮箱地址存在!");
}else{
System.out.println("邮箱地址不存在!");
}
}

public void String(){
Timer time1=new Timer();
TimerTask time2=new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub

}
};

time2.cancel();

}

}
0 0
原创粉丝点击