0

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

4

1 回答 1

2

我相信逗号是不允许的,因为它在技术上是 RFC 822/2822 中的列表分隔符。至少,我是这么读的。

于 2012-05-21T22:36:03.380 回答