【问题标题】:how to ensure that total emails recipeients (to, cc and bcc) do not total 50如何确保电子邮件收件人总数(to、cc 和 bcc)不总计 50
【发布时间】:2009-09-03 05:14:04
【问题描述】:

我有一个发送电子邮件的应用程序,但我一次只能发送 50 个收件人(由于服务器限制)

我的原始问题 (break up array into little arrays) 关于如何将大数组分解为较小的数组,得到了很好的回应。将其拆分为 50 个数组(并发送多封邮件)

但现在又多了一层复杂性。人们可以在 to、cc 或 bcc 中输入姓名

所以现在的诀窍是,您从 3 个数组开始(to: 数组、cc: 数组和 bcc: 数组)

并且必须拆分邮件,使每封邮件的收件人总数不超过 50 个。

注意:没有必要的理想优化,只要它在功能上有效。

编辑:为了澄清(因为下面有几个问题,前面有 3 个明确的数组,“to”、“cc”和“bcc”)。如果我将它们合并在一起,然后一次发送 50 个,我怎么知道在 to、cc 和 bcc 中放入什么。我需要把它们分开。

【问题讨论】:

  • 特定的“cc”或“bcc”是否必须映射到特定的“to”?只是将所有这些信息放入一个数组中而没有任何方法将它们映射在一起似乎是行不通的。也许您应该为每个“to”设置单独的“cc”数组和“bcc”数组?
  • 如果我理解正确,如果您的用户数字 51 个收件人,您必须发送 2 封邮件,前 50 个收件人和第二封邮件中的最后一个?并且您想要一个算法想法将其扩展到 3 个收件人类(to 、cc、bcc),对吗?
  • 您打算如何在不同的电子邮件中分配 cc 和 bcc 字段?为什么它们是必要的(而不是单个领域中的每个人,无论是抄送、抄送还是密送)?
  • 我不同意这是一个有趣的说法。

标签: c# email


【解决方案1】:

我错过了什么吗?你就不能这样吗?

foreach (var batchOf50 in SplitIntoBatches(toArray, 50))
{
    SendEmail(batchOf50, null, null);    // first param is the to list
}

foreach (var batchOf50 in SplitIntoBatches(ccArray, 50))
{
    SendEmail(null, batchOf50, null);    // second param is the cc list
}

foreach (var batchOf50 in SplitIntoBatches(bccArray, 50))
{
    SendEmail(null, null, batchOf50);    // third param is the bcc list
}

(我将把 SplitIntoBatchesSendEmail 的实现留给读者练习!)

【讨论】:

    【解决方案2】:

    我会将这 3 个数组合并为一个结构化数组,我将在其中保留收件人类型,如下所示

    {address1, to}...{address_n, cc}...{address_m, bcc}
    

    然后,我将每 50 个元素拆分一次数组并发送电子邮件。

    所以我确定我会发送最少数量的电子邮件

    【讨论】:

    • 但是如果你将它们全部合并到一个数组中,你怎么知道哪个放在“to”中,哪些放在“bcc”中
    • 我已经为 3 个收件人中的每一个输入了 3 个数组,当我将它们合并时,我将创建一对数组(地址、收件人),所以当我处理根据我之前设置的“收件人”标志,我会知道在哪里正确添加地址
    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 2021-03-03
    • 1970-01-01
    • 2010-12-05
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多