2009-09-02 111 views
0

我有發出電子郵件的應用程序,但我必須每次只發出50個收件人(由於服務器限制)如何保證總電子郵件recipeients(到,抄送和密送)不要總50

我在原始問題(break up array into little arrays)上對如何將大陣列拆分成更小的陣列得到了很好的回覆。將其分成50個陣列(併發送多個郵件)

但是現在又出現了一個更復雜的等級。人們可以在收件人,抄送輸入姓名或BCC

所以現在的訣竅是,你開始用3門陣列(該到:陣列,並抄送:陣列和BCC:陣列)

,並有分裂收到郵件,這樣每封郵件的收件人總數不會超過50。

注意:只要功能正常,沒有必要的理想優化。爲了澄清(因爲在這裏有幾個問題,前面有3個清晰的數組,「to」,「cc」和「bcc」)。如果我將它們全部合併在一起,然後發送50,我怎麼知道要在to,cc和bcc中放置什麼。我需要讓他們分開。

+1

不是特定的「cc」或「bcc」必須映射到特定的「to」嗎?只是將所有這些信息放入數組中,而沒有任何方法將它們映射在一起似乎不起作用。也許你應該爲每個「to」有單獨的「cc」數組和「bcc」數組? – 2009-09-02 15:44:20

+0

如果我理解正確,如果你的用戶數字51收件人你必須發送2郵件,第一個50收件人和第二個郵件中的最後一個?你想要一個算法的想法將其擴展到3個收件人類(to,cc,bcc),對嗎? – michele 2009-09-02 15:46:34

+1

您打算如何在單獨的電子郵件中分發cc和bcc字段?爲什麼它們是必要的(而不是每個人都在一個領域,不管是cc,還是bcc)? – 2009-09-02 15:46:53

回答

2

我錯過了什麼嗎?你不能這樣做嗎?

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實施作爲練習讀者!)

-1

我會合並3個數組到一個單一的結構化數組,其中我會繼續收件人類型,像這樣

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

然後,我會拆分數組每50個元素併發送電子郵件。

所以我相信我會發送最少量的電子郵件

+0

但你怎麼知道哪一個放在「到」,如果你將它們合併到一個數組中,將放入「密件抄送」中的哪一個 – leora 2009-09-02 21:15:08

+0

我已經爲3個收件人中的每一個輸入了3個數組,當我將它們合併時,我將創建一組夫婦(地址,收件人),所以當我處理該批次時,我將知道在哪裏正確添加地址,基於之前設置的標誌「收件人」 – michele 2009-09-03 07:39:40

相關問題