2014-10-11 64 views
2

我想在用戶註冊時發送確認電子郵件,但首先我要確保此電子郵件是真實的並且正在工作,有沒有辦法檢查?
我的意思是讓我說我​​想註冊這封電子郵件:[email protected],在服務器端我想發送電子郵件地址到API或任何返回此電子郵件正在工作的東西,然後我會發送確認一。
是否有可能這樣做?
謝謝有沒有辦法確保提供的電子郵件正在工作?

回答

3

這正是你想要的: End-to-end Email Address Verification for Applications

本教程由三個部分組成:

1)驗證 一些代碼:

public static bool isEmail(string inputEmail) 
{ 
    inputEmail = NulltoString(inputEmail); 
    string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + 
     @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + 
     @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"; 
    Regex re = new Regex(strRegex); 
    if (re.IsMatch(inputEmail)) 
    return (true); 
    else 
    return (false); 
} 

2)通過SMTP的網絡連接驗證

string[] host = (address.Split('@')); 
string hostname = host[1]; 

IPHostEntry IPhst = Dns.Resolve(hostname); 
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25); 
Socket s= new Socket(endPt.AddressFamily, 
     SocketType.Stream,ProtocolType.Tcp); 
s.Connect(endPt); 

3)通過SMTP握手

...更多信息驗證here

1

首先,您可以使用正則表達式進行電子郵件驗證。喜歡這個。

public const string MatchEmailPattern = 
      @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" 
    + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]? 
       [0-9]{1,2}|25[0-5]|2[0-4][0-9])\." 
    + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]? 
       [0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" 
    + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$"; 

    /// <summary> 
    /// Checks whether the given Email-Parameter is a valid E-Mail address. 
    /// </summary> 
    /// <param name="email">Parameter-string that contains an E-Mail address.</param> 
    /// <returns>True, when Parameter-string is not null and 
    /// contains a valid E-Mail address; 
    /// otherwise false.</returns> 
    public static bool IsEmail(string email) 
    { 
    if (email != null) return Regex.IsMatch(email, MatchEmailPattern); 
    else return false; 
    } 

其次,你可以使用第三方API來驗證電子郵件(我認爲,你正在尋找這個)。一些有用的鏈接,API -

相關問題