【发布时间】:2013-02-25 13:08:28
【问题描述】:
向MailMessage.BCC 添加多个收件人时,AddRange() 没有选项。仅限MailMessage.Bcc.Add();
可以通过扩展方法更改此功能吗?在这一点上我有点迷茫,任何指针都会非常感激。
【问题讨论】:
标签: c# extension-methods system.net.mail
向MailMessage.BCC 添加多个收件人时,AddRange() 没有选项。仅限MailMessage.Bcc.Add();
可以通过扩展方法更改此功能吗?在这一点上我有点迷茫,任何指针都会非常感激。
【问题讨论】:
标签: c# extension-methods system.net.mail
假设您正在谈论 System.Net.Mail.MailMessage 类,您需要的已经由 MailAddressCollection.Add 方法提供(Bcc 是 MailAddressCollection 类型)。
只需调用 Add 方法,并使用逗号字符 (",") 分隔的多个电子邮件地址。
检查一下:
http://msdn.microsoft.com/en-us/library/ms144695(v=vs.100).aspx
【讨论】:
MailAddressCollection 类的重载。
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("abc@xyz.com");
var address2 = new MailAddress("wxy@hij.com");
message.Bcc.AddRange(new[] { address1, address2 });
【讨论】: