邮箱正确性验证源代码
来源:互联网 发布:制作电子相册软件 知乎 编辑:程序博客网 时间: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();
}
}
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
- 邮箱正确性验证源代码
- java邮箱正确性验证
- java 验证邮箱格式正确性
- java 验证邮箱格式正确性
- java 验证邮箱格式正确性
- 普通方法验证 邮箱正确性
- java 验证邮箱格式正确性、验证字符串是否为数字
- java 验证邮箱格式正确性、验证字符串是否为数字
- 验证软件包的正确性
- 验证正确性的方法
- 居民身份证正确性验证算法
- 验证日期的正确性
- 读写二进制文件,验证正确性
- 子网掩码的正确性验证
- 验证身份证号码的正确性
- js 验证身份证号码正确性
- 身份证验证其正确性
- 手机号码正确性的验证
- Javascript作用域和变量提升
- ++
- 指来指去
- Spring整合dwr实例解析
- Single Number II
- 邮箱正确性验证源代码
- Linux驱动开发之五---按键驱动(查询方式)(Tiny6410)
- 第十六周 利用指针对两个数字进行排序
- LeetCode 之 Max Points on a Line
- 如何将net.tcp协议寄宿到IIS
- 第十六周项目1--打入“内部”,寻“内幕”
- 我突然明白了游戏里的角色
- 一台服务器 两个tomcat6 两个服务的安装方法
- Java回顾之网络通信