日期:2014-05-20  浏览次数:20929 次

电子邮件@后域名如何才能知道正确地址?
比如 :
 hai@fmmu.edu.XXX
 ldle@163.dcef.ff  
 censl@shmu.XX.XX
 
我只知道 ldle@163, hai@fmmu 这前面部分,有没有什么办法可以知道后面部分正确域名?


谢谢各位大大!

------解决方案--------------------
这个真没法确定,例如企业邮箱,@后面都是可以自己定义的,只能按规则来判断是否一个合法的邮箱地址,而不能直接从邮箱地址的字符串上判断出是否一个有效的邮箱,如果真要判断,那就只能向此邮箱发一个邮件进行测试
------解决方案--------------------
@后面是域名的信息,这个是随时变话的,要怎么判断呢?
------解决方案--------------------
基本不可能知道。。后面部分不规则。。如很多企业邮箱后面都是企业域名。。。
------解决方案--------------------
探讨

基本不可能知道。。后面部分不规则。。如很多企业邮箱后面都是企业域名。。。

------解决方案--------------------
这种域名行文规则就像网址域名一样,是某个地址的代号,除了字符串须符合一定的规则(以点分割,使用规定字符等),其它则都是自定义的了
------解决方案--------------------
探讨
引用:

这种域名行文规则就像网址域名一样,是某个地址的代号,除了字符串须符合一定的规则(以点分割,使用规定字符等),其它则都是自定义的了

有没有可能用cmd ping 测试一下,出来呢?

------解决方案--------------------
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");
        }
    }
}