产品需求
判断用户输入的邮箱地址其域名是否真实存在,比如zhangsan@163.com
邮箱域名163.com
是否是一个真实存在的邮箱域名。
实现方案
可以通过DNS域名系统查询mx交互记录
,引入 maven:
<!-- https://mvnrepository.com/artifact/dnsjava/dnsjava -->
<dependency>
<groupId>dnsjava</groupId>
<artifactId>dnsjava</artifactId>
<version>2.1.8</version>
</dependency>
代码示例:
package com.yzy.test;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.Type;
public class DNSTest {
public static void main(String[] args) throws Exception {
Lookup lookup = new Lookup("163.com", Type.MX);
lookup.run();
if (lookup.getResult() != Lookup.SUCCESSFUL) {
System.err.println("ERROR: " + lookup.getErrorString());
return;
}
Record[] answers = lookup.getAnswers();
for (Record rec : answers) {
System.out.println(rec.toString());
}
}
}
控制台输出:
163.com. 316 IN MX 10 163mx02.mxmail.netease.com.
163.com. 316 IN MX 10 163mx03.mxmail.netease.com.
163.com. 316 IN MX 50 163mx00.mxmail.netease.com.
163.com. 316 IN MX 10 163mx01.mxmail.netease.com.
说明163.com
是真实可用的邮箱域名