Puis-je vérifier si une adresse email existe en utilisant .net?

J’ai vu quelques exemples php montrant comment vous pouvez envoyer une requête ping à une boîte de réception (sans lui envoyer de courrier) pour vérifier si elle existe. Je me demandais si quelqu’un savait si cela est possible avec .net? Si c’est le cas, je vais écrire une application pour effectuer une vérification en bloc de la liste des courriels que j’ai capturés via mon site.

SMTP définit la commande VRFY pour cela , mais étant donné que les abus des spammeurs ont totalement dépassé le nombre d’utilisations légitimes, pratiquement tous les serveurs de messagerie dans le monde sont configurés pour mentir .

Non, il est en principe impossible de vérifier si un email existe – indépendamment de la langue. Il n’y a tout simplement pas de protocole pour le faire.

Il existe des solutions partielles, mais aucune d’elles n’est fiable.

Voir Comment vérifier si une adresse email existe sans envoyer un email? pour plus de détails.

Que voulez-vous dire si vous écrivez “vérifier l’email”? Sans envoyer un lien unique au propriétaire de l’e-mail, vous ne pouvez pas vérifier cela, vous pouvez uniquement vérifier la syntaxe de l’e-mail et la connexion à smtp.

 public static bool isEmail(ssortingng inputEmail) { inputEmail = NulltoSsortingng(inputEmail); ssortingng 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); } 

chèque smtp

 ssortingng[] host = (address.Split('@')); ssortingng 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); 

http://www.codicode.com/art/free_asp_net_email_validator_verifier.aspx . Utilisez la référence DLL à votre code. Il est gratuit à la fois pour un usage personnel et pour la redissortingbution. Il vérifie l’existence du nom de domaine sans envoyer de courrier électronique.

Ce n’est pas infaillible. Le mieux que vous puissiez faire est de vérifier la syntaxe et de voir si le nom de domaine est résolu.

Syntaxe de messagerie RegEx: (?#?[_a-zA-Z0-9-+]+(\.[_a-zA-Z0-9-+]+)*)@(?[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|arpa|asia|coop|info|jobs|mobi|museum|name|travel)))

 protected bool checkDNS(ssortingng host, ssortingng recType = "MX") { bool result = false; try { using (Process proc = new Process()) { proc.StartInfo.FileName = "nslookup"; proc.StartInfo.Arguments = ssortingng.Format("-type={0} {1}", recType, host); proc.StartInfo.CreateNoWindow = true; proc.StartInfo.ErrorDialog = false; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.UseShellExecute = false; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.OutputDataReceived += (object sender, DataReceivedEventArgs e) => { if ((e.Data != null) && (!result)) result = e.Data.StartsWith(host); }; proc.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => { if (e.Data != null) { //read error output here, not sure what for? } }; proc.Start(); proc.BeginErrorReadLine(); proc.BeginOutputReadLine(); proc.WaitForExit(30000); //timeout after 30 seconds. } } catch { result = false; } return result; }