首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:
public static boolean checkEmail(String email) {
if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
return false;
}
String host = "";
String hostName = email.split("@")[1];
Record[] result = null;
SMTPClient client = new SMTPClient();
try {
// 查找MX记录
Lookup lookup = new Lookup(hostName, Type.MX);
lookup.run();
if (lookup.getResult() != Lookup.SUCCESSFUL) {
return false;
} else {
result = lookup.getAnswers();
}
// 连接到邮箱服务器
for (int i = 0; i < result.length; i++) {
host = result[i].getAdditionalName().toString();
client.connect(host);
if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) {
client.disconnect();
continue;
} else {
break;
}
}
//以下2项自己填写快速的,有效的邮箱
client.login("163.com");
client.setSender("sxgkwei@163.com");
client.addRecipient(email);
if (250 == client.getReplyCode()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
}
}
return false;
}
需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar
这个嘛我觉得是不可能的!首先你注册不同的email 是注册到不同网站的数据库中,各个网站不可能让你到他们的数据库中查找这个email 是否存在,所以你这个问题不存在!可以忽略!
这个无法判断0 0.
如注册。只能首先使用正则表达式,要求正确输入。。然后程序发送电子邮件到输入的邮箱,进行二次确认,方可。这个时候对方就需要进入邮箱进行一系列操作。
只能这样。希望对你有帮助
检测是不是合法的地址跟检测它是不是存在是两码事。是不是合法是由电子邮件是否符合email协议中定义的格式;是不是存在,是在合法的基础上看这个email是否已被注册。一般情况下看是否合法是比较常用的,其中用正则确实是比较公用的方法。而是否存在,这要分两种情况,1 对于该服务器来说,这个邮箱是否存在,这比较简单,就是查一下数据库中是否有相应的邮箱数据罢了,这可以用来检测该用户名是否在该server下注册了邮箱;另一种就是你说的我现在要发某一封邮件去一个邮箱,发之前我想确认一下该邮箱是否存在,这个就比较麻烦了,而且一般是作不到的,因为邮件server完全可以不提供相应的api给你,所以你也可以看到一般邮箱的认证就是发一封邮件到你邮箱里,让你自己登录去点某个链接去认证,所以你还是死心了吧。
正则