邮箱有效性验证
情景
系统上发送离职人邮箱报错,要求发送时过滤掉离职人邮箱。
下图是发送到离职人邮箱的提示:
实现方法
Lookup,SMTPClient
这个方法准确率高,离职人邮箱可以过滤掉
下载jar包或者写入依赖:commons-net-3.6.jar
,dnsjava-2.1.9.jar
public static boolean checkEmail(String email) {
if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
logger.info(email + "邮箱match失败!");
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) {
logger.info(email + "邮箱lookup失败!" + lookup.getResult());
return false;
} else {
result = lookup.getAnswers();
}
// 连接到邮箱服务器
for (int i = 0; i < result.length; i++) {
host = result[i].getAdditionalName().