比如 :
hai@fmmu.edu.XXX
ldle@163.dcef.ff
censl@shmu.XX.XX
我只知道 ldle@163, hai@fmmu 这前面部分,有没有什么办法可以知道后面部分正确域名?
谢谢各位大大!
------解决方案--------------------
这个真没法确定,例如企业邮箱,@后面都是可以自己定义的,只能按规则来判断是否一个合法的邮箱地址,而不能直接从邮箱地址的字符串上判断出是否一个有效的邮箱,如果真要判断,那就只能向此邮箱发一个邮件进行测试
------解决方案--------------------
@后面是域名的信息,这个是随时变话的,要怎么判断呢?
------解决方案--------------------
基本不可能知道。。后面部分不规则。。如很多企业邮箱后面都是企业域名。。。
------解决方案--------------------
------解决方案--------------------
这种域名行文规则就像网址域名一样,是某个地址的代号,除了字符串须符合一定的规则(以点分割,使用规定字符等),其它则都是自定义的了
------解决方案--------------------
------解决方案--------------------
- Java code
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;/** * PingMailDomain.java * @author jileniao.net * 判断输入的邮件地址@后的域名是否正确 */public class PingMailDomain { private Boolean isMailDomailRight(String emailAdd) throws IOException { String[] tmp = emailAdd.split("@"); // 简单校验邮件地址是否含有@号:非有效邮箱地址 if (!emailAdd.contains("@")) { return false; } String domain = tmp[1]; String cmdString = "cmd /c ping " + domain; Process prs = Runtime.getRuntime().exec(cmdString); BufferedReader br = new BufferedReader(new InputStreamReader(prs.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); // 得到ping结果信息 while ((line = br.readLine()) != null) { sb.append(line); } String result = sb.toString(); String[] temp = result.split("%"); String result1 = temp[0]; // ping结果loss为100%:非有效邮箱域名 if (result1.endsWith("100")) { return false; } return true; } public static void main(String[] args) throws Exception { System.out.println("Please input EmailAddress"); Scanner input = new Scanner(System.in); // 获取键盘输入的邮件地址 String addressString = input.nextLine(); PingMailDomain pmd = new PingMailDomain(); if (pmd.isMailDomailRight(addressString)) { System.out.println("OK"); } else { System.out.println("NG"); } }}