2017-07-27 3 views
2

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; 

} 
+0

'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. –

+1

La manière correcte de valider un email est de lui envoyer un email avec un lien de confirmation. –

Répondre

0

Ce lien vous donne la réponse que vous recherchez. En bref, je ne pense pas que vous pouvez vérifier qu'une destination email (pas seulement le format) est valide sans lui envoyer un message. Vous pouvez donc envoyer un e-mail et si aucun renvoi ne se produit (je ne sais pas quel est le terme technique ici), vous pouvez confirmer son bon.

C# code to validate email address

+0

est là un moyen que je peux cingler l'adresse de courrier et il envoie une réponse si elle existe. –

+0

Un serveur de messagerie bien/correctement configuré ne révélera pas qu'une adresse est valide jusqu'à ce qu'un message soit soumis de sorte que vous deviez envoyer un email à l'adresse et vérifier le code d'acceptation correct (et cela présume votre liste non grise et avoir attendre un certain temps avant que votre message ne soit accepté par le serveur de messagerie. – user3788685