只想知道 发表于 2015-1-16 22:18:44

ASP.NET网站制作之VB.NET考证邮件地点的正当性完成代码

我也不知道,我原来理解的,NET就是C++编程,只是与JAVA相对,呵呵。以为.ET就是高级C++编程。1、提出成绩
  如今,关于用户在Web页面上或德律风中给出的Email地点,我们愈来愈不敢一定它是不是真的无效。在明天这个渣滓邮件众多成灾的年月,人们完整有来由舍不得容易泄漏Email地点。
  
  另外一方面,关于经由过程正轨路子失掉的邮件地点,当我们将它用于正当的目标时,也经常要为邮件地点是不是无效而懊恼,用户大概成心或偶然地写错地点,也大概因为长工夫不会见而招致邮箱生效。关于大批的邮件地点,大概能够手工考证其正当性,比方发送测试email;可是,当邮件地点的数目到达数万乃至更多时,手工考证就不成能了,必需用专门的工具或本人编写程序主动实行考证。
  
  惯例的考证办法只从email地点的格局判别其正当性,比方反省它是不是包括“@”和“.”标记。明显,这类反省是不充实的,邮件地点格局准确其实不证实它必定无效。因为这个缘故原由,一些网站接纳了用email发送暗码、特别资本的URL等举措,大概请求用户复兴email,以此确保email地点的无效性。可是,这些举措不见得任什么时候候都无效,比方,你大概不是从本人的网站上搜集用户email,而是经由过程圈外人取得。
  
  思索到这些缘故原由,考证email地点正当性最基本的举措是查询邮件服务器。本文将给出完成这一义务的完全VB.NET代码。
  
  2、邮件服务器之正当性
  关于任何邮件地点,判别其正当性的第一步固然是看看它的格局是不是准确,比方是不是包括“@”和“.”标记,这方面的材料良多,乃至另有现成的控件,以是本文不再赘述。我们的义务从判别邮件地点的域是不是正当入手下手,比方关于abc@sina.com.cn这个地点,起首判别sina.com.cn的邮件服务器是不是无效。
  
  每个域有一个MX纪录,即邮件互换器(MailExchanger)纪录,它指向该域内处置email的服务器,我们只需查询DNS服务器便可取得该信息。Windows自己带来的nslookup命令十分合适于完成该义务,比方,要查找sina.com.cn的邮件服务器,只需实行nslookup-type=mxsina.com.cn,个中-type=MX暗示要查找MX纪录,输入了局如图一所示。Windows的nslookup命令要安装了TCP/IP协定后才可用,具体申明可拜见Windows匡助。
   

  上面的GetMailServer函数封装了挪用Windowsnslookup命令的操纵,依据参数中指定的域名前往邮件服务器。
  
  PrivateFunctionGetMailServer(ByValsDomainAsString)AsString
  DiminfoAsNewProcessStartInfo()
  DimnsAsProcess
  "挪用Windows的nslookup命令,查找邮件服务器
  info.UseShellExecute=False
  info.RedirectStandardInput=True
  info.RedirectStandardOutput=True
  info.FileName="nslookup"
  info.CreateNoWindow=True
  "查找范例为MX。关于nslookup的具体申明,请拜见
  "Windows匡助
  info.Arguments="-type=MX"+sDomain.ToUpper.Trim
  "启动一个举行实行Windows的nslookup命令()
  ns=Process.Start(info)
  DimsoutAsStreamReader
  sout=ns.StandardOutput
  "使用正则表达式找出nslookup命令输入了局中的邮件服务器信息
  DimregAsRegex=NewRegex("mailexchanger=(?[^s]+)")
  DimmailserverAsString
  DimresponseAsString=""
  DoWhile(sout.Peek()>-1)
  response=sout.ReadLine()
  DimamatchAsMatch=reg.Match(response)
  If(amatch.Success)Then
  mailserver=amatch.Groups("server").Value
  ExitDo
  EndIf
  Loop
  Returnmailserver
  EndFunction
  
  3、邮件地点之正当性
  只需邮件地点中指定的域正当,我们就能够毗连邮件服务器,试着发送一个email。假如邮件服务器回覆说该用户不法或不存在,标明邮件地点有效。这一步的次要操纵包含创立一个毗连邮件服务器的Socket,然后依照SMTP邮件传输协定的请求与服务器通讯,完成邮件发送操纵。关于SMTP协定的具体申明,有乐趣的读者可拜见SMTP标准(RFC821):http://www.ietf.org/rfc/rfc821.txt。
  
  上面CheckEmail函数的输出参数是一个邮件地点,函数的前往值暗示该地点是不是正当。该函数有两个数值可随便调剂:在发送邮件的过程当中,我们要向对方的邮件服务器供应一个正当的域名以标明本人的身份,这里选择的是sina.com.cn;依据收集和对方邮件服务器的忙闲水平,呼应工夫也会产生变更,这里选择的守候工夫是3秒。当收集或对方服务器十分忙时,减小守候工夫会增添测试失利的大概性。
  
  PublicFunctionCheckEmail(ByValsEmailAsString)AsLong
  
  DimoStreamAsNetworkStream
  DimsFromAsString"发件人
  DimsToAsString"收件人
  DimsResponseAsString"邮件服务器的应对
  DimRemote_AddrAsString"发件人的域名
  DimmserverAsString"邮件服务器
  DimsTextAsString()
  
  sTo="<"+sEmail+">"
  "从邮件地点分别出帐户名和域名
  sText=sEmail.Split(CType("@",Char))
  "查找该域的邮件服务器
  mserver=GetMailServer(sText(1))
  "mserver为空值标明查找邮件服务器失利
  Ifmserver=""Then
  Return4
  ExitFunction
  EndIf
  "发件人地点的域名必需正当
  Remote_Addr="sina.com.cn"
  sFrom="

海妖 发表于 2015-1-19 08:03:55

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

精灵巫婆 发表于 2015-1-24 17:55:20

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

蒙在股里 发表于 2015-2-2 11:38:30

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

小魔女 发表于 2015-2-7 19:18:25

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

因胸联盟 发表于 2015-2-23 02:48:34

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

分手快乐 发表于 2015-3-7 05:51:32

那么,ASP.Net有哪些改进呢?

变相怪杰 发表于 2015-3-14 14:01:39

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

谁可相欹 发表于 2015-3-21 09:41:08

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
页: [1]
查看完整版本: ASP.NET网站制作之VB.NET考证邮件地点的正当性完成代码