意外的'无效的电子邮件地址格式'

时间:2012-05-21 22:24:28

标签: .net email-validation mailmessage

我有以下代码行将To地址添加到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遇到逗号,它只是用双引号包装名称而不用反斜杠。如果有人能说什么时候需要报价以及何时需要反斜杠,我会欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

我认为不允许使用逗号,因为它在技术上是RFC 822/2822中的列表分隔符。至少,这就是我读它的方式。