【问题标题】:Extension methods for MailMessage Bcc AddRangeMailMessage Bcc AddRange 的扩展方法
【发布时间】:2013-02-25 13:08:28
【问题描述】:

MailMessage.BCC 添加多个收件人时,AddRange() 没有选项。仅限MailMessage.Bcc.Add();

可以通过扩展方法更改此功能吗?在这一点上我有点迷茫,任何指针都会非常感激。

【问题讨论】:

    标签: c# extension-methods system.net.mail


    【解决方案1】:

    假设您正在谈论 System.Net.Mail.MailMessage 类,您需要的已经由 MailAddressCollection.Add 方法提供(Bcc 是 MailAddressCollection 类型)。

    只需调用 Add 方法,并使用逗号字符 (",") 分隔的多个电子邮件地址。

    检查一下:

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

    【讨论】:

    • +1 我没有看到 MailAddressCollection 类的重载。
    【解决方案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("abc@xyz.com");
    var address2 = new MailAddress("wxy@hij.com");
    message.Bcc.AddRange(new[] { address1, address2 });
    

    【讨论】:

    • 这太好了,很抱歉我忘了说虽然我的电子邮件列表都是字符串类型,但理想情况下我不想将它们转换为扩展方法之外的 MailAddress!跨度>
    • 没关系,@catalin-manoliu 的解决方案可能会让你过得更好 :)
    猜你喜欢
    • 2023-03-21
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2016-03-05
    相关资源
    最近更新 更多