我有以下代码行来向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 遇到逗号,它只是将名称用双引号括起来,而不用反斜杠。如果有人可以说出何时需要引号以及何时需要反斜杠,我会欢迎任何建议。