2013-02-25 67 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