Posso verificare se esiste un indirizzo email usando .net?

Ho visto alcuni esempi di php su come è ansible eseguire il ping di una casella di posta (senza inviare alcuna posta elettronica) per verificare se esiste. Mi stavo chiedendo se qualcuno sa se questo è ansible con .net? Se sto andando a scrivere un’app per fare un controllo collettivo sulla lista di e-mail che ho catturato attraverso il mio sito.

SMTP definisce il comando VRFY per questo , ma poiché l’abuso da parte degli spammer ha totalmente sopraffatto il numero di usi legittimi, praticamente ogni server di posta elettronica nel mondo è configurato per mentire .

No, in linea di principio è imansible verificare se esiste un’email, indipendentemente dalla lingua. Semplicemente non esiste un protocollo per farlo.

Ci sono alcune soluzioni parziali, ma nessuna è affidabile.

Vedi Come verificare se esiste un indirizzo email senza inviare un’e-mail? per dettagli.

Cosa intendi se scrivi “check email”? Senza inviare alcun collegamento univoco per il proprietario della posta elettronica, non è ansible controllare questo, è ansible solo controllare la syntax della posta elettronica e la connessione a smtp.

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

controllo smtp

 string[] host = (address.Split('@')); string 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 . Usa il riferimento alla DLL del tuo codice. È gratuito sia per uso personale che per ridistribuzione. Controlla la presenza del nome di dominio senza effettivamente inviare un’e-mail.

Questo non è infallibile. Il meglio che puoi fare è controllare la syntax e vedere se il nome di dominio viene risolto.

Sintassi e-mail 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))) Nome (?#?[_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(string host, string recType = "MX") { bool result = false; try { using (Process proc = new Process()) { proc.StartInfo.FileName = "nslookup"; proc.StartInfo.Arguments = string.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; }