‘尽可能延迟创建对象的时间
Dim oConnection As New TcpClient()
Try
‘超时时间
oConnection.SendTimeout = 3000
‘连接SMTP端口
oConnection.Connect(mserver, 25)
‘收集邮件服务器的应答信息
oStream = oConnection.GetStream()
sResponse = GetData(oStream)
sResponse = SendData(oStream, "HELO " & Remote_Addr & vbCrLf)
sResponse = SendData(oStream, "MAIL FROM: " & sFrom & vbCrLf)
‘如果对MAIL FROM指令有肯定的应答,
‘至少表明邮件地址的域名正确
If ValidResponse(sResponse) Then
sResponse = SendData(oStream, "RCPT TO: " & sTo & vbCrLf)
‘如果对RCPT TO指令有肯定的应答
‘表明邮件服务器已认可该地址
If ValidResponse(sResponse) Then
Return 1 ‘邮件地址有效
Else
Return 2 ‘只有域名有效
End If
End If
‘结束与邮件服务器的会话
SendData(oStream, "QUIT" & vbCrLf)
oConnection.Close()
oStream = Nothing
Catch
Return 3 ‘错误!
End Try
End Function
‘获取服务器应答数据,并将其转换为String
Private Function GetData(ByRef oStream As NetworkStream) As String
Dim bResponse(1024) As Byte
Dim sResponse As String
Dim lenStream As Integer = oStream.Read(bResponse, 0, 1024)
If lenStream > 0 Then
sResponse = Encoding.ASCII.GetString(bResponse, 0, 1024)
End If
Return sResponse
End Function
‘向邮件服务器发送数据
Private Function SendData(ByRef oStream As NetworkStream, ByVal sToSend As String) As String
Dim sResponse As String
‘将String转换成Byte数组
Dim bArray() As Byte = Encoding.ASCII.GetBytes(sToSend.ToCharArray)
‘发送数据
oStream.Write(bArray, 0, bArray.Length())
sResponse = GetData(oStream)
‘返回应答
Return sResponse
End Function
‘服务器是否返回肯定的回答?
Private Function ValidResponse(ByVal sResult As String) As Boolean
Dim bResult As Boolean
Dim iFirst As Integer
If sResult.Length > 1 Then
iFirst = CType(sResult.Substring(0, 1), Integer)
‘如果服务器返回应答的第一个字符小于‘3‘
‘我们认为服务器已认可刚才的操作
If iFirst < 3 Then bResult = True
End If
Return bResult
End Function
CheckEmail函数的返回值表示测试结果:1表示邮件地址合法,2表示只有域名正确(可能是用户的邮件帐户无效),3表示出现了错误,4表示无法找到邮件服务器。
四、用户界面
以上我们完成了测试邮件地址是否合法的核心功能,这些函数可用于各种形式的应用程序,包括Web服务、Windows应用程序、控件等,最多只要修改一下声明方式。为便于测试这些函数,下面我们要做一个Windows应用形式的简单用户界面。
启动VS.NET,选择新建Visual Basic项目、Windows应用程序,如图二,输入项目名称CheckMail以及保存位置,点击“确定”按钮,VS.NET创建一个新的项目。

从工具箱把一个文本标签、一个输入框和一个按钮拖到VS.NET自动创建的窗体上。将窗体的TEXT属性改为“Email地址测试”,文本标签的TEXT属性改为“邮件地址”,按钮的TEXT属性改为“Check!”,调整各个控件的位置,使其看起来整齐美观,如图三。

双击按钮,输入点击按钮时执行的Button1_CliVB.NET验证邮件地址的合法性实现代码
原文:http://www.jb51.net/article/26904.htm