【发布时间】:2012-05-28 10:31:30
【问题描述】:
我有以下代码行来向MailMessage 实例添加一个收件人地址。 (字符串中的 X 代表字母字符的占位符,以防止识别客户。)
message.To.Add("Xxxxxxxxx Xxxxxx Xxxxxxxxxx, Xxx. <xxxxxx@xxxxxxxxx-xx.com>");
我收到以下错误:
指定的字符串不是电子邮件地址所需的格式
message 的类型为 System.Net.Mail.MailMessage。我的理解是这种格式被接受了。而且,事实上,代码一直在使用其他地址。名称中的逗号或句点是否可能破坏格式?
编辑
这就是我到目前为止以正确格式构建电子邮件地址的内容。
// Construct a compound email address string
public static string BuildEmailAddress(string name, string emailAddress)
{
if (String.IsNullOrWhiteSpace(name))
return emailAddress;
name = Regex.Replace(name, @"[()<>\[\]:;@\\,.""]",
m => string.Format(@"\{0}", m.Value));
return String.Format("\"{0}\" <{1}>", name, emailAddress);
}
其中的要素仍不清楚。例如,如果 Yahoo 遇到逗号,它只是将名称用双引号括起来,而不用反斜杠。如果有人能说出何时需要引号以及何时需要反斜杠,我会欢迎任何建议。
【问题讨论】:
-
请列出出现的特殊字符。任何非 ASCII 符号,如 äöüß?
-
把逗号和句号一个一个去掉,看看还能不能用?
-
您的 .NET 版本也很有用,因为可能已经通过这些版本进行了修复
-
@skarmats:没有那样的事。所有普通的旧常规美国英文字母字符(如图所示)。我们正在使用 .NET 4。
-
@EricJ.: 好的,我接下来试试。希望获得更多见解,因为如果不允许某些字符,我需要一个完整的列表。
标签: .net email-validation mailmessage