Je crée un service web pour valider si un email entré par un utilisateur existe ou pas. Voici la méthode Web. Le problème est que la méthode retourne toujours vrai lorsque l'email est faux ou correct.comment valider si un email existe réellement à partir du 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()' interroge le DNS * enregistrements A * pour le domaine qui ne sont pas du tout lié à l'adresse du serveur SMTP qui opère le domaine - que l'information est dans le * enregistrements MX * - l'IP que vous résolvez est sans valeur par rapport à l'email. –
La manière correcte de valider un email est de lui envoyer un email avec un lien de confirmation. –