我正在尝试使用以下代码使用 C# 发送电子邮件。
MailMessage mail = new MailMessage();
mail.From = new MailAddress(fromAddress, friendlyName);
mail.To.Add(toAddress);
mail.CC.Add(ccAddress);
//set the content
mail.Subject = emailSubject;
mail.Body = emailHeader + "\n" + emailBody;
//send the message
SmtpClient smtp = new SmtpClient(ServerAddress);
smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
mail.IsBodyHtml = true;
smtp.Send(mail);
现在,我的函数接收到的“toAddress”字符串可能包含单个地址,也可能包含许多逗号分隔的地址。
现在的问题是,如果有多个逗号分隔的地址,其中一两个可能是错误的电子邮件地址格式。
因此,当我尝试使用此代码发送电子邮件时,出现异常:
“指定的字符串不符合电子邮件地址所需的格式。”
有什么方法可以验证逗号分隔的电子邮件地址吗?
我在某处读到,验证电子邮件地址的唯一方法是向其发送电子邮件,因为验证电子邮件地址的正则表达式可能非常大。
另外,我无法控制设计,或者地址字符串如何进入我的函数,我无法在用户界面中添加电子邮件验证,所以我很无助......
我的问题是电子邮件不会发送至ALL逗号分隔字符串中的地址,即使仅SOME地址的格式错误。
有什么方法可以正确验证 .NET 中的电子邮件地址吗?有没有办法清除坏电子邮件地址并仅将邮件发送给好电子邮件地址?
这是我们在生产中的代码(甚至为您添加了逗号)。通常您不应该使用 try/catch 进行验证,但它在这里效果很好。我相信这比尝试重新编码验证器更好。
string[] allToAddresses = to.Split(";,".ToCharArray(),
StringSplitOptions.RemoveEmptyEntries)
foreach (string toAddress in allToAddresses)
{
try
{
message.To.Add(toAddress);
}
catch (FormatException)
{
//do nothing, ill-formed address.
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)