asp.net - new - Verifique que la dirección de correo electrónico sea válida para System.Net.Mail.MailAddress
validate email net core (5)
Actualmente, para evitar que se generen errores debido a direcciones de correo electrónico no válidas, hago lo siguiente:
Dim mailAddress As MailAddress
Try
mailAddress = New MailAddress("testing@[email protected]")
Catch ex As Exception
''Invalid email
End Try
Sin embargo, en lugar de depender de Try..Catch
, ¿hay alguna manera de validar que la dirección de correo electrónico sea 100% válida para el tipo MailAddress
?
Sé que hay muchas funciones de expresiones regulares para validar correos electrónicos, pero estoy buscando la función que el tipo de MailAddress
usa para validar sus direcciones.
Algunos personajes son válidos en algunos proveedores de servicios, ¡pero lo mismo no está en otros! El SmtpClient
no sabe nada sobre los proveedores de servicios. Por lo tanto, tiene que filtrar lo menos posible. La Wikipedia es muy mencionada sobre los Standers.
La validación de MailAddress
se menciona en MailAddress . Por lo tanto, creo que puede verificar esas validaciones antes de inicializar MailAddress
.
Desafortunadamente, no hay MailAddress.TryParse
método MailAddress.TryParse
.
Su código es la forma ideal de validar las direcciones de correo electrónico en .Net.
MS también proporciona el código para un validador de correo electrónico basado en expresiones regex: https://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
No es realmente una respuesta a esta pregunta per se, pero en caso de que alguien lo necesite, escribí una función C # para validar las direcciones de correo electrónico utilizando este método.
FixEmailAddress("[email protected]")
devuelve "[email protected]"
FixEmailAddress("wa@[email protected],[email protected],asdfdsf,[email protected]")
devuelve "[email protected],[email protected]"
Proceso las listas de direcciones de correo electrónico de esta manera porque una lista de correos separados por comas es un parámetro válido para MailAddressCollection.Add ()
/// <summary>
/// Given a single email address, return the email address if it is valid, or empty string if invalid.
/// or given a comma delimited list of email addresses, return the a comma list of valid email addresses from the original list.
/// </summary>
/// <param name="emailAddess"></param>
/// <returns>Validated email address(es)</returns>
public static string FixEmailAddress(string emailAddress)
{
string result = "";
emailAddress = emailAddress.Replace(";",",");
if (emailAddress.Contains(","))
{
List<string> results = new List<string>();
string[] emailAddresses = emailAddress.Split(new char[] { '','' });
foreach (string e in emailAddresses)
{
string temp = FixEmailAddress(e);
if (temp != "")
{
results.Add(temp);
}
}
result = string.Join(",", results);
}
else
{
try
{
System.Net.Mail.MailAddress email = new System.Net.Mail.MailAddress(emailAddress);
result = email.Address;
}
catch (Exception)
{
result = "";
}
}
return result;
}
Si necesita asegurarse de que una dirección de correo electrónico determinada sea válida de acuerdo con los estándares IETF, que la clase MailAddress
parece seguir solo parcialmente, en el momento de escribir este documento, le sugiero que consulte EmailVerify.NET , a .NET. componente que puede integrar fácilmente en sus soluciones. No depende de las expresiones regulares para realizar su trabajo, sino que se basa en una máquina de estado finito interno, por lo que es muy, muy rápido.
Descargo de responsabilidad: soy el desarrollador principal de este componente.