Compruebe que la dirección de correo electrónico es válida para el Sistema.Net.Correo.MailAddress


Actualmente, para evitar que se produzcan 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 forma de validar que la dirección de correo electrónico será 100% válida para el tipo MailAddress?

Sé que hay un montón de funciones regex por ahí para validar correos electrónicos, pero estoy buscando la función que el tipo MailAddress utiliza para validar sus direcciones.

Author: Gabriele Petronella, 2011-08-11

5 answers

Desafortunadamente, no hay un método MailAddress.TryParse.

Su código es la forma ideal de validar direcciones de correo electrónico en. Net.

 28
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-11 14:46:47

Si necesita asegurarse de que una dirección de correo electrónico dada es válida de acuerdo con los estándares IETF, que la clase MailAddress parece seguir solo parcialmente, en el momento de escribir este artículo, le sugiero que eche un vistazo a EmailVerify.NET , un componente.NET que puede integrar fácilmente en sus soluciones. No depende de expresiones regulares para realizar su trabajo, pero se basa en una máquina de estados finitos interna, por lo que es muy, muy rápido.

Descargo de responsabilidad: Soy el desarrollador principal de este componente.

 5
Author: Zsolt Botykai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-06 11:52:52

No es realmente una respuesta a esta pregunta per se, pero en caso de que alguien lo necesite, escribí una función de C# para validar 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 separada por comas de correos electrónicos 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;

}

 1
Author: Walter Stabosz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-11 15:43:14

MS también proporciona el código para un validador de correo electrónico basado en expresiones regulares: https://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

 1
Author: Patrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-08 08:34:37

Algunos caracteres son válidos en algunos proveedores de servicios, pero lo mismo no es en otros! Los SmtpClient no saben nada sobre los proveedores de servicios. Así que tiene que filtrar lo menos posible. El Wikipedia es welly mencionado sobre los participantes.

La validación de MailAddressse menciona en el MSDN. Por lo tanto, creo que puede verificar esas validaciones antes de inicializar MailAddress.

 0
Author: NaveenBhat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-11 15:42:42