【问题标题】:MailMessage.To.Add() throwing exception : "An invalid character was found in the mail header: ','."MailMessage.To.Add() 抛出异常:“在邮件标头中发现无效字符:','。”
【发布时间】:2014-11-12 12:19:14
【问题描述】:

我在 sharepoint 项目中使用它时遇到此错误,而在控制台应用程序中它工作正常

我正在使用 MailMessage 类使用 SMTP 发送电子邮件。 但是,当我尝试将用户添加到 'To' 属性时,我得到 {"An invalid character was found in the mail header: ','."} 异常,我认为这里发生了一些可疑的 ',' 被允许分隔多个用户。 Adding multiple user

** 多个电子邮件地址必须用逗号字符 (",") 分隔。**

MailMessage mailMessage = new MailMessage();

 mailMessage.To.Add("amir_khan@enter.com,walter_white@yahoo.com,");

【问题讨论】:

标签: c# sharepoint-2010


【解决方案1】:

找到了罪魁祸首:这是最后一个电子邮件地址末尾的多余逗号(,

mailMessage.To.Add("amir_khan@enter.com,walter_white@yahoo.com,");

刚刚删除了它,瞧!它的工作。不知道为什么它在控制台应用程序中有效,但在共享点中无效:(

mailMessage.To.Add("amir_khan@enter.com,walter_white@yahoo.com");

如果这在 SharePoint 中不起作用,请将每个地址分别添加到 MailMessage 对象中,如下所示;

foreach (var address in StringofEmails.Split(",")) {
MailMessage.To.Add(new MailAddress(address.Trim(), ""));

}

【讨论】:

  • 这个回复被低估了。这也是我的问题。谢谢。
  • 没想到这么简单!刚刚添加 .Trim(',');到我的字符串的末尾。
【解决方案2】:

即使结尾没有逗号,我也收到了错误。原来我需要在逗号后面留一个空格

我必须将我的代码从 string.Join(",", emailList) 更改为 string.Join(", ", emailList)

以下对我不起作用。

mailMessage.To.Add("amir_khan@enter.com,walter_white@yahoo.com");

以下对我有用(请注意逗号后有空格)。

mailMessage.To.Add("amir_khan@enter.com, walter_white@yahoo.com");

【讨论】:

  • 这是我从 .Net 3.5 升级到 .Net 4.7.2 后的问题。他们一定引入了更严格的解析规则。
【解决方案3】:

我无法复制这个。上面的代码对我有用。也许尝试每次使用单独的“To”添加它们。

mailMessage.To.Add(x);
mailMessage.To.Add(y);

【讨论】:

  • 谢谢。它可以工作,但是使用有问题的指定有什么问题吗?
  • @Nee 我找不到一个抱歉,我将您的代码直接复制到我的 VS 中并且没有问题:?也许重新启动 VS 可能会有所帮助,或者尝试在逗号后添加一个空格?
  • 只有当我在 sharepoint 项目中使用它而不是在控制台应用程序或其他应用程序中使用它时才会收到此错误
  • System.Web 和 System.Net 中都有 Smtp 类。在一个你必须使用逗号,在另一个你必须使用分号。不记得哪个是哪个。如果我没记错的话,System.Net 中的那个是推荐的...
  • 分号不适用于 System.Net.Mail.SmtpClient
【解决方案4】:

我不得不用更好看的电子邮件更新一个项目,然后我发布了这个网络项目并得到了这个错误。

我的来自一些调试代码,其中

currentUser = myname@mycompany.com   

添加了

MailAddress mailAddressUser = new MailAddress(currentUser + "@mycompany.com");

基本上:

myname@mycompany.com@mycompany.com    

所以不是尾随逗号的问题,而是另一个@

【讨论】:

    【解决方案5】:

    在我的例子中,我忘记过滤掉没有电子邮件的用户,所以我形成了这样的电子邮件列表:

    username1@ldomain.com
    username2@domain.com
    @domain.com  //PROBLEM HERE
    username3@linamar.com
    

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 2015-09-18
      • 1970-01-01
      • 2013-07-29
      • 2014-01-03
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多