verificar validos validar saber net lista falso electronicos electronico correos correo comprobar como asp c# .net email

c# - validos - verificar email



¿Puedo verificar si existe una dirección de correo electrónico usando.net? (6)

He visto algunos ejemplos php de cómo puedes hacer ping en una bandeja de entrada (sin enviar ningún correo) para verificar si existe. Me preguntaba si alguien sabe si esto es posible con .net? Si voy a escribir una aplicación para hacer un control masivo de la lista de correos electrónicos que he capturado a través de mi sitio.


¿A qué te refieres si estás escribiendo "consultar correo electrónico"? Sin enviar un enlace exclusivo para el propietario del correo electrónico, no puede verificarlo, solo puede verificar la sintaxis del correo electrónico y la conexión 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); }

smtp check

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);


Esto no es infalible. Lo mejor que puede hacer es verificar la sintaxis y ver si el nombre de dominio se resuelve.

Email sintaxis RegEx: (?<username>#?[_a-zA-Z0-9-+]+(/.[_a-zA-Z0-9-+]+)*)@(?<domain>[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; }