在做群发软件时,为了提高准确率,除了要保实邮箱合法性,发现也可以验证邮箱真实性。
在上篇发表的文章中也有邮箱真实性验证功能,但是我测试了一下,好像不准,不能使用;
VB。NET类我也测试了一下,发现比较准确,CheckEmail() 返回值小于等于1表示邮箱存在,
其它返回值表示邮箱不存在,至少代码表示什么错误,有兴趣的朋友自已研究。。。我比较懒啦
基本原理:
从邮件地址分离出帐户名和域名
查找该域的邮件服务器
收集邮件服务器的应答信息, 如果对MAIL FROM指令有肯定的应答, 至少表明邮件地址的域名正确, 如果对RCPT TO指令有肯定的应答, 表明邮件服务器已认可该地址
实例源代码(vn.net) **********
Namespace
WebXml.com.cn.CryptoAngelProfessional
' VB.NET编程验证邮件地址的合法性
Public Class ValidateEmailAddress
Private Function GetMailServer( ByVal sDomain As String ) As String
Dim info As New ProcessStartInfo()
Dim ns As Process
' 调用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)
Dim sout As StreamReader
sout = ns.StandardOutput
' 利用正则表达式找出nslookup命令输出结果中的邮件服务器信息
Dim reg As Regex = New Regex( " mail exchanger = (?<server>[^/s]+) " )
Dim mailserver As String = ""
Dim response As String
' VB.NET编程验证邮件地址的合法性
Public Class ValidateEmailAddress
Private Function GetMailServer( ByVal sDomain As String ) As String
Dim info As New ProcessStartInfo()
Dim ns As Process
' 调用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)
Dim sout As StreamReader
sout = ns.StandardOutput
' 利用正则表达式找出nslookup命令输出结果中的邮件服务器信息
Dim reg As Regex = New Regex( " mail exchanger = (?<server>[^/s]+) " )
Dim mailserver As String = ""
Dim response As String