2017-07-27 5 views
2

ユーザーが入力した電子メールが存在するかどうかを検証するWebサービスを作成しています。ここにはWebメソッドがあります。問題は、電子メールが間違っているか正しい場合に、常にtrueを返すことです。DNSから実際に電子メールが存在するかどうかを検証する方法

[WebMethod(Description = "This method is used to validate email")] 
public bool ValidateEmail(string email) 
{ 
    bool isValid = false; 

    try 
    { 
     string[] host = (email.Split('@')); 
     string hostname = host[1]; 

     IPHostEntry IPhost = Dns.GetHostByName(hostname); 

     IPEndPoint endPt = new IPEndPoint(IPhost.AddressList[0], 25); 
     Socket soc = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 

     soc.Connect(endPt); //open connection to host 
     soc.Close(); 
     isValid = true; 

    } 
    catch (Exception ex) 
    { 
     //ex.Message.ToString(); 
     isValid = false; 
    } 

    return isValid = true; 

} 
+0

'Dns.GetHostByName()'ですべてのドメインにサービスを提供するSMTPサーバのアドレスに関連していないドメインに対して* DNS *レコードを照会する - その情報は* MXレコードであります*あなたが解決するIPは、電子メールに関しては価値がありません。 –

+1

電子メールを検証する正しい方法は、確認リンク付きで電子メールで送信することです。 –

答えて

0

このリンクをクリックすると、お探しの答えが表示されます。要するに、電子メールの宛先(フォーマットだけでなく)がメッセージを送信せずに有効であることを確認できるとは思えません。だからあなたは電子メールを送信することができますし、もし何の技術的な用語がここにあるか分からない場合、あなたはその良いことを確認することができます。

C# code to validate email address

+0

にはメールアドレスをpingできる方法があり、それが存在すれば応答を送信します。 –

+0

井戸/正しく設定されたメールサーバーは、メッセージが送信されるまでアドレスが有効であることを明らかにしませんので、アドレスに電子メールを送信し、正しい承認コードを確認する必要があります。あなたのメッセージがメールサーバによって実際に受け入れられるまでの時間を待ちます。 – user3788685

関連する問題