31

我试图添加多个这样的地址。

MailAddress mailAddressTo = new MailAddress("sample@google.com;sample1@google.com","Vetrivelmp");

但会抛出错误

An invalid character was found in the mail header: ';'
4

7 回答 7

46

您不能使用MailAddress构造函数来指定多个收据,但可以使用MailMessage如下所示的对象。

使用MailMessage( not MailAddress ) 构造函数:

var msg = new MailMessage("from@domain.com", "to1@gmail.com, to2@gmail.com");

另一种方法是:

MailMessage mail = new MailMessage();
mail.To.Add("me@mycompany.com,him@hiscompany.com,her@hercompany.com");

另一种方法是:

MailMessage msg = new MailMessage();
msg.To.Add("person1@domain.com");
msg.To.Add("person2@domain.com");
msg.To.Add("person3@domain.com");
msg.To.Add("person4@domain.com");
于 2012-03-16T11:09:37.080 回答
21

实际上,分号不是有效的分隔符。不幸的是,MSDN 没有记录这一点,必须自己找出来。

如果要添加更多地址,请用逗号分隔。并且空间将划分显示名称和电子邮件地址。“To”属性接受以下格式:

  • “电子邮件@server.com”
  • “email1@server1.com,email2@server2.com”
  • “名称 email@server.com”
  • “名称 email@server1.com,email@server2.com”

ETC...

我在这篇博文中写了更多关于这个主题的文章

于 2012-03-22T09:35:32.957 回答
6

使用逗号 (,) 代替分号 (;) 作为分隔符。

如果以分号字符 (";") 分隔的多个电子邮件地址在addresses 参数中传递。引发 FormatException 异常。

有效的例子

MailAddressCollection.Add(字符串):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add("sample@google.com, sample1@google.com");
  ...
}

MailAddressCollection.Add(MailAddress):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add(new MailAddress("sample@google.com", "Vetrivelmp"));
  msg.To.Add(new MailAddress("sample1@google.com", "Vetrivelmp1"));
  ...
}
于 2013-11-23T00:22:54.977 回答
2

可能会有一个问题,您为什么要这样做?类似的东西MailMessage.ToMailAddressCollectionAdd方法被重载以在字符串中获取多个电子邮件地址,用逗号分隔(请参阅http://msdn.microsoft.com/en-us/library/ms144695.aspx)。

MailAddress 对象的通常用途是将它们添加到电子邮件中,如果您有多个地址,那么我假设您想将它们添加到 To、CC 等字段之一,在这种情况下,Add 重载应该很好。如果还有其他事情,那么您将不得不为您正在尝试做的事情提供更多背景信息。

于 2012-03-16T11:13:15.523 回答
1

这是这个主题的另一个变体,FWIW:

    SenderEmail = "me@mine.com";
    RecipientEmail = "this@this.com, that@that.com, other@theother.com";
    MailMessage msg = new MailMessage(SenderEmail, RecipientEmail);

注意逗号。更多详细信息可在此处的 MSDN 中找到。

于 2013-12-23T18:34:50.550 回答
0

@Tschareck

“逗号用于分隔邮件地址列表中的元素。因此,逗号不应用于列表中未加引号的显示名称。以下邮件地址将被允许”在http://msdn.microsoft 中。 com/en-us/library/system.net.mail.mailaddress.aspx

最好的问候, 阿纳鲁德

于 2013-06-20T09:17:25.033 回答
-2

这对我有用。

  MailMessage m_message = new MailMessage();
  string m_addys = "addy2@foo.com,addy1@foo.com";
  m_message.To.Add(m_addys);
于 2013-12-04T18:48:49.270 回答