虽然不是针对这个问题的答案,但如果有人需要的话,我编写了一个使用此方法验证电子邮件地址的C#函数。
FixEmailAddress("walter@xyz.com")
returns "walter@xyz.com"
FixEmailAddress("wa@lter@xyz.com,tom@xyz.com,asdfdsf,vsav-sdfsd@xyz.xyz")
返回 "tom@xyz.com,vsav-sdfsd@xyz.xyz"
我这样处理电子邮件地址列表,因为逗号分隔的电子邮件列表是MailAddressCollection.Add()的有效参数。
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;
}
MailAddress
使用了什么吗? - OdedMailBnfHelper
的大型内部类,在.Net 4.0中发生了重大变化。我不建议提取它。 - SLaksTry Catch
将是具有未来性的,所以我同意SLaks的答案。否则,如果您真的想编写一个正则表达式,MailAddress的文档描述了它使用的规则,因此您可以将其用作起点。 - Hans Olsson