Email地址有效果性驗證
發表時間:2024-06-06 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Email地址有效性的檢驗是一個經常遇到的問題啦!一般的檢驗方法是對Email地址字符串進行簡單的檢驗,如是否含有@ .等有效字符等。這種方法只能保證該地址從格式上看似有效,并不能保證地址可達。最近進行大量的地址校驗,寫了一個小程序,可以保證Email地址真正可達。 public bool che...
Email地址有效性的檢驗是一個經常遇到的問題啦!一般的檢驗方法是對Email地址字符串進行簡單的檢驗,如是否含有@ .等有效字符等。這種方法只能保證該地址從格式上看似有效,并不能保證地址可達。最近進行大量的地址校驗,寫了一個小程序,可以保證Email地址真正可達。
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;
[email protected]");
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;
}
}
這個程序是根據SMTP的基本過程實現的。與一個mail服務器連接發郵件的基本過程可能是這樣的:
telnet mail.brookes.com 25
>>220 brookes.com<IMail 8.02>
HELO
>>250 mail.brookes.com
MAIL FROM:
[email protected] >>250 Ok
RCPT TO:
[email protected] >>250 ok its for
[email protected] DATA
>>ok.send it ;end with <CRLF>.<CRLF>
soem data.
>>250 message queued
QUIT
>>221 Goodbye.
(出處:Viphot)