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 direcciones de correo electrónico utilizando este método.
FixEmailAddress("[email protected]")
vuelve "[email protected]"
FixEmailAddress("[email protected]@xyz.com,[email protected],asdfdsf,[email protected]")
vuelve "[email protected],[email protected]"
Cómo proceso listas de direcciones de correo electrónico de esta manera porque una coma lista de correos electrónicos separados 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;
}
¿Usted intentó utilizar un descompilador para ver qué 'utiliza MailAddress'? – Oded
@Oded: Tengo. Utiliza una gran clase interna llamada 'MailBnfHelper', que ha cambiado sustancialmente en .Net 4.0. No recomiendo extraerlo. – SLaks
Las diferentes versiones de .Net Framework usan reglas diferentes para lo que admite, así que me preocuparía que cualquier expresión regular que crees no sea a prueba de futuro. El 'Try Catch' sería una prueba futura, así que estoy de acuerdo con la respuesta de SLaks. De lo contrario, si realmente desea escribir una expresión regular, la documentación de [MailAddress] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx) describe las reglas que utiliza para que usted pueda podría ser capaz de usar eso como punto de partida. –