ユーザーが入力した電子メールが存在するかどうかを検証する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;
}
'Dns.GetHostByName()'ですべてのドメインにサービスを提供するSMTPサーバのアドレスに関連していないドメインに対して* DNS *レコードを照会する - その情報は* MXレコードであります*あなたが解決するIPは、電子メールに関しては価値がありません。 –
電子メールを検証する正しい方法は、確認リンク付きで電子メールで送信することです。 –