Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java验证电子邮件地址?_Java_Validation_Jsp_Email Validation - Fatal编程技术网

如何使用java验证电子邮件地址?

如何使用java验证电子邮件地址?,java,validation,jsp,email-validation,Java,Validation,Jsp,Email Validation,我正在开发一个系统,任何用户都可以发送他的个人信息,如姓名、联系方式和电子邮件。将有另一个门户,我们可以从中检索这些数据和流程。在这方面,我正在使用JavaWeb技术 现在我的问题是关于验证电子邮件地址的过程。这不仅意味着电子邮件地址是否格式错误,还意味着该电子邮件id的可用性 这意味着如果我输入“abc@efg.hijk“这是格式完全正确的电子邮件id,但我的系统将检查此类电子邮件地址是否确实存在。如果它存在,我会将它存储在数据库中 提前感谢您的支持。您可以轻松地用谷歌搜索格式检查代码。因此,

我正在开发一个系统,任何用户都可以发送他的个人信息,如姓名、联系方式和电子邮件。将有另一个门户,我们可以从中检索这些数据和流程。在这方面,我正在使用JavaWeb技术

现在我的问题是关于验证电子邮件地址的过程。这不仅意味着电子邮件地址是否格式错误,还意味着该电子邮件id的可用性

这意味着如果我输入“abc@efg.hijk“这是格式完全正确的电子邮件id,但我的系统将检查此类电子邮件地址是否确实存在。如果它存在,我会将它存储在数据库中


提前感谢您的支持。

您可以轻松地用谷歌搜索格式检查代码。因此,我们只讨论存在性检查程序

  • 格式检查后,生成验证码并存储
  • 将代码发送到目标电子邮件
  • 用户填写代码,然后进行比较
  • 存储电子邮件地址

  • 电子邮件验证可以由我从中找到的“SMTPMXLookup”类完成。以下类可以帮助您查找电子邮件地址的有效性:

    公共类SMTPMXLookup{
    私有静态int-hear(BufferedReader-in)引发IOException{
    字符串行=null;
    int res=0;
    而((line=in.readLine())!=null){
    字符串pfx=行。子字符串(0,3);
    试一试{
    res=整数.parseInt(pfx);
    }捕获(例外情况除外){
    res=-1;
    }
    如果(第3行字符)!='-'){
    打破
    }
    }
    返回res;
    }
    私有静态void say(BufferedWriter wr,字符串文本)
    抛出IOException{
    wr.write(text+“\r\n”);
    wr.flush();
    }
    私有静态ArrayList getMX(字符串主机名)
    抛出NamingException{
    //对域中的MX记录执行DNS查找
    Hashtable env=新的Hashtable();
    put(“java.naming.factory.initial”,
    “com.sun.jndi.dns.DnsContextFactory”);
    DirContext ictx=新的初始DirContext(env);
    Attributes attrs=(Attributes)ictx.getAttributes(主机名,新字符串[]{“MX”});
    属性attr=attrs.get(“MX”);
    //如果我们没有MX记录,请尝试机器本身
    如果((attr==null)| |(attr.size()==0)){
    attrs=ictx.getAttributes(主机名,新字符串[]{“A”});
    attr=attrs.get(“A”);
    if(attr==null)
    抛出新的NamingException
    (“名称“+”主机名“+”不匹配);
    }
    //呼!我们有机器要尝试。将它们作为数组列表返回
    //注意:我们应该考虑到偏好是绝对的
    //正确。这是留给关心的人的练习。
    ArrayList res=新的ArrayList();
    namingumeration en=attr.getAll();
    while(en.hasMore()){
    字符串邮件主机;
    字符串x=(字符串)en.next();
    字符串f[]=x.split(“”);
    //修复*************
    如果(f.length==1)
    mailhost=f[0];
    else if(f[1].endsWith(“.”)
    mailhost=f[1]。子字符串(0,(f[1]。长度()-1));
    其他的
    mailhost=f[1];
    //修复方法******************
    res.add(mailhost);
    }
    返回res;
    }
    公共静态布尔isAddressValid(字符串地址){
    //查找域名的分隔符
    int pos=地址.indexOf('@');
    //如果地址不包含“@”,则它无效
    如果(pos==-1)返回false;
    //隔离域/计算机名并获取邮件交换器列表
    字符串域=地址。子字符串(++pos);
    ArrayList mxList=null;
    试一试{
    mxList=getMX(域);
    }
    捕获(NamingException-ex){
    返回false;
    }
    //仅仅因为我们可以向域发送邮件,并不意味着
    //地址是有效的,但如果我们不能,这是一个肯定的迹象,它不是
    if(mxList.size()==0)返回false;
    //现在,执行SMTP验证,尝试每个邮件交换器,直到
    //肯定接受。一个MX可能允许
    //一条消息[例如存储和转发器]和另一条[例如
    //这就是为什么我们真的应该拒绝它
    //考虑到偏好。
    对于(intmx=0;mx