当前位置:  技术问答>java相关

如何判断一个信箱地址有效(判断一个信箱地址存在)

    来源: 互联网  发布时间:2015-02-02

    本文导语:  假如信箱地址为12@yeah.com ,如何判断信箱地址存在 | 我以前做PHP时曾对这个问题做过讨论。给你这篇文章吧。 虽说是PHP的但是思路你可以参考一下,三级方法不过最后的方法实在太慢虽然准...

假如信箱地址为12@yeah.com ,如何判断信箱地址存在

|
我以前做PHP时曾对这个问题做过讨论。给你这篇文章吧。

虽说是PHP的但是思路你可以参考一下,三级方法不过最后的方法实在太慢虽然准确。

-------------------------

电子邮件地址校验的方式探讨

在应用程序中,我们经常要对用户输入的电子邮件地址进行校验,有避免一些无聊的人给一些错误的 email地址。校验的方法有很多种,本文从最基本的校验方式开始,对电子邮件地址校验方法做一个小结。


1、用 Dreamweaver 3 生成的 javascript 脚本进行基本验证

在 Behaviors | Validate Form | Accept Email Address 选项里对电子邮件地址输入的文本框进行校验。DW会自动生成一段相应的 javascript 代码,你可以修改其中的报错显示语句,比如改成中文。

通过对其代码的分析,可以看出,它仅是简单地判断一下是否有 @ 字符。
判断语句如下:

p=val.indexOf('@');
if (p

其基本原理是检查输入的 E-Mail 字符串是否有 @ 字符,在 @ 字符前有英文字母或数字,在之后有数节字符串,最后的小数点后只能有二个或三个英文字母。

新的 javascript 也提供了对正则表达式支持,所以我们也可以直接在客户端进行校验,而无需提交到服务器了。
这样只需把上述php程序改成 javascript 程序就可。

function CheckEmail(email) //给一个地址
{  

var pattern = /^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$/;  

if(pattern.test(str))  return true;  
else  {  
   alert("请输入正确的email地址");  
   return false;  
}  

}  

这种校验方法是我们最常用的,但也存在局限,比如, aaa@bbb.cc 这种明显是不存在的地址也会被通过。


3、用往 Socket 端口发送 SMTP 信息的方法来进行校验

其实,我们还有一种比较麻烦但是更加严格的校验方式,就是利用 Socket 口往用户提供的信箱中发送 SMTP 指令。

本方法用到的一些 SMTP 的常用指令,我就不给出说明了,有兴趣的朋友可以参考一下www.oso.com.cn的《用Socket发送电子邮件》一文或是读一些相关的资料。

以下给出一个函数,来自《PHP程序设计》一书,它就是用这种方法来实现对 email地址的验证,不过我测试了一下,太慢了!如果我们把它简化一点,如只发一个 HELLO指令,不知可否?(我没试过)

function validateEmail ($email){   
   global $SERVER_NAME;
   $return = array(false, "" );
   list ($user, $domain) = split("@", $email, 2);
   $arr = explode(".", $domain);   
   $count = count ($arr);
   $tld = $arr[$count - 2] . "." . $arr[$count - 1];
   if(checkdnsrr($tld, "MX")) {
      if(getmxrr($tld, $mxhosts, $weight)) {
         for($i = 0; $i  0) && ($out == "")){ 
                     break; 
                  }
                  else { 
                     $s++;
                  }
                  if($s == 9999) { 
                     break;
                  }
               } while($out == "");
               set_socket_blocking($fp, true);
               fputs($fp, "HELO $SERVER_NAMEn");
               $output = fgets ($fp, 2000);
               fputs($fp, "MAIL FROM: n" );
               $output = fgets($fp, 2000);
               fputs($fp, "RCPT TO: n");            
               $output = fgets($fp, 2000);
               if(ereg( "^250", $output )) {
                  $return[0] = true;
               } 
               else {
                  $return[0] = false;
                  $return[1] = $output;
               }
               fputs ($fp, "QUITn");
               fclose($fp);
               if($return[0] == true){ 
                  break; 
               }
            }
         }
      }
   }
   return $return;
}


好了,如果我们结合第二和第三种方法,那么……… 嘿嘿!你就甭想耍我了。

有什么问题,请与我联系 ycshowtop@21cn.com

    
 
 

您可能感兴趣的文章:

  • ▲ 如何判断一个EMAIL地址为正确的地址? ▲
  • 如何通过ip判断该ip地址是否有共享文件
  • c#判断正确的ip地址格式示例
  • 有两个问题:如何判断本机IP地址和如何自动执行telnet脚本
  • 请问一下怎么判断输入的IP,是正确的,如:IP地址中没有字母,数字不超过255。
  • SOS,如何判断IP地址是来自哪一个网段的?
  • C#判断ip地址是否可以ping的通
  • 如何使用telnet mail.domain.com 25 判断一个某个邮件大地址是否存在
  • 如何判断一个平IP地址在某一个范围内
  • Shell脚本判断IP地址是否合法的方法
  • Java判断本机IP地址类型的方法
  • 使用Python判断IP地址合法性的方法实例
  • C#获取真实IP地址(IP转为长整形、判断是否内网IP的方法)
  • 谁有判断一个字符串是合法IP地址的函数
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 empty():判断Vector是否为空(返回true时为空)
  • linux->shell-> if 条件判断,关于软连接的判断!
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • shell如何判断文件是否存在,如何判断变量是否为空
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 在判断自符是否等于**时,用equals(“**”),那么如果我想判断它的值是否>=2该用什么呢?
  • 我是学pb的,判断闰年的是isdate("2-28"),但在java里怎么判断呢?
  • linux 下的自解压文件是什么格式,如何判断文件是否为自解压c++或者脚本判断均可
  • mysql中如何判断当前是字符 mysql判断字段中有无汉字
  • 知道TCP/UDP的包头,如何判断其应用层协议类型,struct tcphdr和 struct udphdr结构中那个变量能判断应用层协议类型。
  • c#判断字符是否为中文的三种方法分享(正则表达式判断)
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?
  • 判断图片-判断位图是否是黑白图片的方法
  • JQuery 判断某个属性是否存在hasAttr用法
  • 请问如何判断一个文件夹是否存在
  • 判断文件格式的c库函数
  • sftp命令如何判断成功与否?
  • Shell条件判断疑问?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3