MailAddress 构造函数中的多个地址
Posted
技术标签:
【中文标题】MailAddress 构造函数中的多个地址【英文标题】:Multiple address in MailAddress constructor 【发布时间】:2012-04-01 22:21:45 【问题描述】:我正试图将多个添加到这样的地址。
MailAddress mailAddressTo = new MailAddress("sample@google.com;sample1@google.com","Vetrivelmp");
但会抛出类似
的错误An invalid character was found in the mail header: ';'
【问题讨论】:
【参考方案1】:您不能使用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");
【讨论】:
我的和你的有什么区别? 我知道这个但是如何在构造函数本身中设置? 他有一个 MailMessage 对象作为开始。实际上,我在回答中已经对此进行了一些解释。简单的答案是mail.To
是一个MailAddressCollection
,它允许多个电子邮件地址。 MailAddress
只拥有一个地址(它的单数可能有助于您记住这一点)。
是的,但如果我给出像“sample@google.commail.To = "me@mycompany.com;him@hiscompany.com;her@hercompany.com";
真的有用吗? MailMessage.To
是一个 MailAddressCollection
对象。您不能为其分配字符串 - 您需要使用 .Add
方法,并且您的电子邮件地址列表必须用逗号分隔,而不是分号。【参考方案2】:
实际上,分号不是有效的分隔符。不幸的是,MSDN 没有记录这一点,必须自己找出来。
如果您想添加更多地址,请用逗号分隔。并且空间将划分显示名称和电子邮件地址。 “To”属性接受以下格式:
“email@server.com” “email1@server1.com, email2@server2.com” “名称 email@server.com” “名称 email@server1.com, email@server2.com”等等……
我写了更多关于这个话题in this blog post
【讨论】:
在您的最后一个示例中,"name email@server1.com, email@server2.com"
,MailMessage 将我所做的测试解释为“电子邮件名称”作为电子邮件前缀。我必须这样做:"Adam Miller <AdamMiller@somewhere.com>"
分隔符现在在文档中 - docs.microsoft.com/en-us/dotnet/api/…【参考方案3】:
使用逗号 (,) 代替分号 (;) 作为分隔符。
MailAddressCollection.Add(String) Method如果以分号字符 (";") 分隔的多个电子邮件地址在地址参数中传递。引发 FormatException 异常。
有效的例子
MailAddressCollection.Add(String):
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"));
...
【讨论】:
【参考方案4】:可能会有一个问题,您为什么要这样做?像MailMessage.To
这样的东西是MailAddressCollection
,它的Add
方法被重载以在一个字符串中接收多个电子邮件地址,用逗号分隔(参见http://msdn.microsoft.com/en-us/library/ms144695.aspx)。
MailAddress 对象的通常用途是将它们添加到电子邮件中,如果您有多个地址,那么我假设您想将它们添加到 To、CC 等字段之一,在这种情况下,您应该使用 Add 重载很好。如果还有其他事情,那么您将不得不为您正在尝试做的事情提供更多背景信息。
【讨论】:
原因是我有预定义的代码,我不应该更改。那么是否可以在 mailaddress 构造函数中添加多个 id? 不,你不能。MailAddress
对象用于单个邮件地址。 msdn.microsoft.com/en-us/library/… 是希望回答您对该对象的任何其他问题的文档。【参考方案5】:
这是这个主题的另一个变体,FWIW:
SenderEmail = "me@mine.com";
RecipientEmail = "this@this.com, that@that.com, other@theother.com";
MailMessage msg = new MailMessage(SenderEmail, RecipientEmail);
注意逗号。更多详细信息可以在 MSDN here 找到。
【讨论】:
【参考方案6】:@Tschareck
“逗号用于分隔邮件地址列表中的元素。因此,在列表中未加引号的显示名称中不应使用逗号。允许使用以下邮件地址”http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx
最好的问候, 阿那鲁德
【讨论】:
【参考方案7】:这对我有用。
MailMessage m_message = new MailMessage();
string m_addys = "addy2@foo.com,addy1@foo.com";
m_message.To.Add(m_addys);
【讨论】:
这并不像你认为的那样。仅向 addy2@foo.com 发送电子邮件,此人的姓名将显示为 addy1@foo.com 你是对的。它应该是这样的:“addy2@foo.com,addy1@foo.com”。它是一个字符串而不是 MailAddress。以上是关于MailAddress 构造函数中的多个地址的主要内容,如果未能解决你的问题,请参考以下文章