MailAddress构造函数中有多个地址

本文关键字:地址 构造函数 MailAddress | 更新日期: 2023-09-27 18:28:05

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

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

但像一样抛出错误

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

MailAddress构造函数中有多个地址

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

使用MailMessage而非MailAddress)构造函数:

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

另一种方法是:

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

另一种方法是:

MailMessage msg = new MailMessage();
msg.To.Add("person1@domain.example");
msg.To.Add("person2@domain.example");
msg.To.Add("person3@domain.example");
msg.To.Add("person4@domain.example");

实际上,分号不是有效的分隔符。不幸的是,MSDN没有记录这一点,只能自己查找。

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

  • email@server.example
  • "CCD_ 6、CCD_
  • "名称CCD_ 8"
  • "名称email@server1.exampleemail@server2.example"

等等。。。

我在这个博客文章

中写了更多关于这个主题的内容

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

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

  • MailAddressCollection.Add(字符串)方法

工作的示例

MailAddressCollection.Add(字符串):

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

MailAddressCollection.Add(MailAddress):

using (MailMessage msg = new MailMessage())
{
  ...
  msg.To.Add(new MailAddress("sample@example.com", "Vetrivelmp"));
  msg.To.Add(new MailAddress("sample1@example.com", "Vetrivelmp1"));
  ...
}

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

MailAddress对象的通常用途是将它们添加到电子邮件中,如果您有多个地址,那么我认为您希望将它们添加至"收件人"、"抄送"等字段之一,在这种情况下,add重载应该会很好地帮您。如果还有其他事情,那么你将不得不为你试图做的事情提供更多的上下文

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

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

注意逗号。更多详细信息可以在MSDN上找到。

@Tschareck

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

谨致问候,Anarud

这就是我的工作原理。

  MailMessage m_message = new MailMessage();
  string m_addys = "addy2@example.com,addy1@example.com";
  m_message.To.Add(m_addys);