2013-04-25 119 views
-1

如何檢查電子郵件是否被驗證?如何檢查電子郵件是否被驗證?

(例如: - [email protected] - >確定
[email protected] - >錯誤)

我要檢查確認所有世界一流水平的電郵地址。

+2

您的意思是否檢查所有域? – 2013-04-25 04:28:05

+0

值得指出的是,很快就會有數百個新的頂級域名正式推出。 '。con'不是新的,但你的代碼*需要知道新的頂級域名。任何事情都可能是有效的。列表中的一些示例(https://gtldresult.icann.org/application-result/applicationstatus/viewstatus)包含'.bike','.baby','.inc'和數百個。此外,'.co'和'.cm'是有效的擴展名,所以即使它們是'.com'的常見拼寫錯誤,您也不能自動認爲它們不正確。 – Spudley 2013-04-25 09:54:16

回答

1

要檢查一個字符串是一個有效的電子郵件地址,你可以使用正則表達式,

例:

bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|asia|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel)\b)\Z", RegexOptions.IgnoreCase); 

要或驗證,如果一個郵箱是否存在未按照本文。

Verify an Email Address

當您發送電子郵件給某人,郵件傳遞給SMTP服務器 然後查找電子郵件 收件人域的MX(郵件交換)記錄。

例如,當您發送電子郵件到[email protected]時,郵件 服務器將嘗試查找gmail.com域的MX記錄。如果存在 記錄,則下一步將確定是否存在 電子郵件用戶名(在我們的示例中爲hello)。

使用類似的邏輯,我們可以驗證來自 計算機的電子郵件地址,而無需實際發送測試消息。

在.Net中做同樣的事情可能是一個乏味的任務。

+0

其工作正常...謝謝 – 2013-04-25 05:23:05

0

這是毫無意義的練習。進行此驗證的唯一方法是向某人發送電子郵件並要求回覆以驗證電子郵件正在使用中。我也不明白你的例子,[email protected]是無效的,但:[email protected]是?什麼?做一些簡單的驗證,你的用戶輸入正確,就是這樣。

+0

[email protected]是正確的電子郵件地址,但[email protected]不正確。我問你如何檢查它是否有效? – 2013-04-25 04:52:51

3

您可以嘗試使用反向電子郵件查找服務,但這些服務不會很可靠,並且許多電子郵件提供商拒絕反向查找請求。所以我認爲你最好的選擇是首先檢查電子郵件地址是否格式正確,然後檢查存在的主機域,然後發送驗證郵件。

0
^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$ 
+0

工作不正常 ------------------ 2013-04-25 05:20:19

+0

hay nikunj只需用'#'分隔符添加開始結尾 – 2013-04-25 05:49:52

0

您也可以使用MailAddress Class驗證string並創建一個擴展。

public static bool IsValidEmailAddress(this string email) 
{ 
    try 
    { 
     var addr = new MailAddress(email); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 

用法:

string email = "[email protected]"; 
if (email.IsValidEmailAddress()) 
{ 
//TODO: Is email 
}