如题,判断email是否是真实的

解决方案 »

  1.   

       请问楼主,
       有这样的需求吗?
        做什么需要判断email是否是真实的?
        一般情况下,就是由服务器自动向邮箱发一个邮件来激活,(就是修改一个状态)
       修改了就表明它是可用的。
      

  2.   


    要发送邮件给很多人,先过滤掉假的email,发送时省点儿时间
      

  3.   


    public static void main(String [] args){
     String str="[email protected]";
     Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
     Matcher matcher = pattern.matcher(str);
     System.out.println(matcher.matches());  

     }
      

  4.   


    这个只验证了 email 的合法性
      

  5.   

    可以去链给出的邮箱的SMTP服务器, 类似telnet那样链, telnet smpt.163.com 25
    HELO [email protected]
    返回正确返回码 应该就可以证明邮箱真的存在吧。 但是好麻烦,也耗资源做这些事
      

  6.   

    不太明白,能给个行得通的例子吗,已经搜了一个,但是不好使import java.io.*;
    import java.net.*;
    import org.xbill.DNS.*;public class CheckEmail {
        public static boolean check(String mailTo) {
            if (!mailTo.matches("w+([-_.]w+)*@w+([-.]w+)*.w+([-.]w+)*")) { //判断格式
                return false;
            }
            String hostName = mailTo.split("@")[1];  //获得如163.com
            String host = null;  // MX记录
            
            try {
                Lookup lookup = new Lookup(hostName, Type.MX);
                lookup.run();
                if (lookup.getResult() != Lookup.SUCCESSFUL) {
                    return false;
                } else {
                    Record[] result = lookup.getAnswers();
                    host = result[0].getAdditionalName().toString();
                }
                
                Socket socket = new Socket(host, 25);
                BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                in.readLine();
                out.write("HELO Sender ");
                out.flush();
                in.readLine();
                out.write("MAIL FROM:<[email protected]> ");
                out.flush();
                in.readLine();
                out.write("RCPT TO:<" + mailTo + "> ");
                out.flush();
                String r = in.readLine();
                out.write("QUIT ");
                out.flush();
                
                out.close();
                in.close();
                socket.close();
                if (!r.startsWith("250")) {
                    return false;
                }
                else {
                    return true;
                }
            } catch (Exception e) {
                return false;
            }
        }
    }
      

  7.   

    EMAIL是否在你们系统中存在好检查,EMAIL合法性也好检查但是EMAIL是否在世界上存在,真是不好查,呵呵
      

  8.   

    我觉得如果先检查email是否真实存在需要花费的时间会比你直接发送个邮件花费的时间更长
      

  9.   

    呵呵,我要是你,我宁愿换个角度,即给每个email发封确认信,呵呵,类似于激活,那么你就可以验证邮箱的是否存在了。你这样做是做不到的,呵呵,除非像楼上所说,验证下smtp服务器,这样多少对你有些帮助。