明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Email地址有效果性驗(yàn)證

[摘要]Email地址有效性的檢驗(yàn)是一個(gè)經(jīng)常遇到的問(wèn)題啦!一般的檢驗(yàn)方法是對(duì)Email地址字符串進(jìn)行簡(jiǎn)單的檢驗(yàn),如是否含有@ .等有效字符等。這種方法只能保證該地址從格式上看似有效,并不能保證地址可達(dá)。最近進(jìn)行大量的地址校驗(yàn),寫(xiě)了一個(gè)小程序,可以保證Email地址真正可達(dá)。 public bool che...

Email地址有效性的檢驗(yàn)是一個(gè)經(jīng)常遇到的問(wèn)題啦!一般的檢驗(yàn)方法是對(duì)Email地址字符串進(jìn)行簡(jiǎn)單的檢驗(yàn),如是否含有@ .等有效字符等。這種方法只能保證該地址從格式上看似有效,并不能保證地址可達(dá)。最近進(jìn)行大量的地址校驗(yàn),寫(xiě)了一個(gè)小程序,可以保證Email地址真正可達(dá)。


public bool checkEmail(string mailAddress)
{
TcpClient tcpc=new TcpClient();
try{
string server=mailAddress.Split('@')[1];
tcpc.Connect(server,25);
NetworkStream s=tcpc.GetStream();
StreamReader sr=new StreamReader(s,Encoding.Default);
string strR="";
strR=sr.ReadLine();
if(!strR.StartsWith("220")) return false;
StreamWriter sw=new StreamWriter(s,Encoding.Default);
sw.WriteLine("HELO");
sw.Flush();
strR=sr.ReadLine();
if(!strR.StartsWith("250")) return false;

sw.WriteLine("MAIL FROM;brookes@tsinghua.org.cn");
sw.Flush();
strR=sr.ReadLine();
if(!strR.StartsWith("250")) return false;

sw.WriteLine("RCPT TO:"+mailAddress);
sw.Flush();
strR=sr.ReadLine();
if(!strR.StartsWith("250")) return false;

sw.WriteLine("QUIT");
sw.Flush();
strR=sr.ReadLine();
return true;

}catch(Exception ee)
{
return false;
}
}


這個(gè)程序是根據(jù)SMTP的基本過(guò)程實(shí)現(xiàn)的。與一個(gè)mail服務(wù)器連接發(fā)郵件的基本過(guò)程可能是這樣的:

telnet mail.brookes.com 25
>>220 brookes.com<IMail 8.02>
HELO
>>250 mail.brookes.com
MAIL FROM:brookes@tsinghua.org.cn
>>250 Ok
RCPT TO:me@brookes.com
>>250 ok its for me@brookes.com
DATA
>>ok.send it ;end with <CRLF>.<CRLF>
soem data.
>>250 message queued
QUIT
>>221 Goodbye.
(出處:Viphot)