2012-03-16 12 views

回答

28

錯誤,您不能使用MailAddress構造函數指定多個收據,但你必須使用MailMessage對象表現出以下

... 
MailMessage mail = new MailMessage(); 
mail.To.Add("[email protected],[email protected],[email protected]"); 
... 

另一種方式是:

MailMessage msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
+0

bw礦和你的有什麼不同? – 2012-03-16 11:12:02

+0

看到我知道這個,但如何在構造函數本身設置? – 2012-03-16 11:13:19

+0

他有一個MailMessage對象作爲開始。我在我的回答中實際上已經解釋了這一點。簡單的答案是'mail.To'是一個允許多個電子郵件地址的'MailAddressCollection'。 'MailAddress'只能保存一個地址(它的單數可以幫助你記住這一點)。 – Chris 2012-03-16 11:14:54

2

可能存在您爲什麼想要這樣做的問題?類似MailMessage.To的是MailAddressCollection,它的Add方法被重載以在字符串中攜帶多個電子郵件地址,並以逗號分隔(請參閱http://msdn.microsoft.com/en-us/library/ms144695.aspx)。

MailAddress對象的常用用途是將它們添加到電子郵件中,如果您有多個地址,那麼我假設您想將它們添加到To,CC等字段之一,在這種情況下,Add overload應該你很好。如果還有別的東西,那麼你將不得不爲你正在嘗試做的事情提供更多的背景。

+0

原因是我有預定義的代碼,我不應該改變。那麼是否可以在mailaddress consturctor中添加多個ID? – 2012-03-16 11:21:29

+0

不,你不能。一個MailAddress對象用於單個郵件地址。 http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx是應該有希望回答關於該對象的任何其他問題的文檔。 – Chris 2012-03-16 11:25:53

18

實際上,分號不是有效的分隔符。不幸的是,MSDN沒有記錄這一點,不得不自己找出這個。

如果您想添加更多地址,請用逗號分隔。該空間將劃分顯示名稱和電子郵件地址。 「目標」 屬性接受以下格式:

等等

我寫了更多關於這個話題in this blog post

+1

在你的最後一個例子中,「name [email protected],[email protected]」,MailMessage將我作爲「姓名郵件」做的一個測試解釋爲電子郵件前綴。我必須這樣做:'「亞當米勒<[email protected]>」' – 2015-05-28 18:40:52

1

使用逗號(,)作爲分隔符,而不是分號(;)。

如果多封用地址參數傳遞用分號字符(「;」)分隔的郵件地址,引發FormatException異常。

實例的工作

MailAddressCollection.Add(字符串):

using (MailMessage msg = new MailMessage()) 
{ 
    ... 
    msg.To.Add("[email protected], [email protected]"); 
    ... 
} 

MailAddressCollection.Add(MailAddress):

using (MailMessage msg = new MailMessage()) 
{ 
    ... 
    msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp")); 
    msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp1")); 
    ... 
} 
-2

這是對我工作。

MailMessage m_message = new MailMessage(); 
    string m_addys = "[email protected],[email protected]"; 
    m_message.To.Add(m_addys); 
+0

這並不符合你的想法。這隻會將電子郵件發送到[email protected],並且此人的姓名將顯示爲[email protected] – 2018-01-23 23:28:39

+0

您是對的。它應該是這樣的:「addy2 @ foo.com,addy1 @ foo.com」。它是一個不是MailAddress的字符串。 – smoore4 2018-01-24 13:10:02