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)))
No, en principio es imposible verificar si existe un correo electrónico, independientemente del idioma. Simplemente no hay protocolo para hacerlo.
Hay algunas soluciones parciales, pero ninguna de ellas es confiable.
Consulte ¿Cómo verificar si existe una dirección de correo electrónico sin enviar un correo electrónico? para detalles.
SMTP define el VRFY
para esto , pero como el abuso por parte de los remitentes de correo no deseado abruma totalmente la cantidad de usos legítimos, prácticamente todos los servidores de correo electrónico del mundo están configurados para mentir .
http://www.codicode.com/art/free_asp_net_email_validator_verifier.aspx . Use la referencia dll a su código. Es gratis tanto para uso personal como para redistribución. Comprueba la existencia del nombre de dominio sin enviar realmente un correo electrónico.
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;
}