2013-02-25 23 views
1

將多個收件人添加到MailMessage.BCC時,沒有AddRange()的選項。只有MailMessage.Bcc.Add();MailMessage的擴展方法Bcc AddRange

可以通過擴展方法更改此功能嗎?我有點迷失在這一點上,任何指針將非常感激。

回答

4

假設你正在談論的System.Net.Mail.MailMessage類,你需要已由MailAddressCollection.Add方法提供(Bcc是MailAddressCollection類型的)。

只需調用多個電子郵件地址用逗號字符(「,」)分隔的Add方法即可。

檢查:

http://msdn.microsoft.com/en-us/library/ms144695(v=vs.100).aspx

+0

+1我沒有看到'MailAddressCollection'類的超載。 – Lukazoid 2013-02-25 13:18:41

2

MailMessage.Bcc的類型是MailAddressCollection。這MailAddressCollection執行ICollection<MailAddress>。所以你可以做的是寫一個通用的AddRange擴展方法,它適用於任何ICollection<T>

這將如下所示:

public static class CollectionExtensions 
{ 
    public static void AddRange<T>(this ICollection<T> target, IEnumerable<T> items) 
    { 
     foreach(var item in items) 
     { 
      target.Add(item); 
     } 
    } 
} 

然後,您可以使用此像這樣:

var address1 = new MailAddress("[email protected]"); 
var address2 = new MailAddress("[email protected]"); 
message.Bcc.AddRange(new[] { address1, address2 }); 
+0

這是偉大的,我很抱歉,我忘了說了,雖然我的電子郵件列表都是字符串類型,我非常不希望將它們轉換爲一個MailAddress擴展方法之外! – Dave 2013-02-25 13:42:33

+0

這很好,你可能會更好用@ catalin-manoliu的解決方案:) – Lukazoid 2013-02-25 13:43:55