2011-11-28 66 views
0

使用JavaMail API發送批量郵件是否有更好的方法?我使用下面的方法。使用JavaMail API發送批量郵件的更好方法

enter code here Transport tr = session.getTransport("smtp"); 
tr.connect(smtphost, username, password); 
tr.sendMessage(msg, msg.getAllRecipients()); 

我用於發送「使用相同的連接郵件n'number。 我有任何其他單獨的方式發送批量郵件。請幫助我獲得更好的解決方案。

+0

我的建議是使用圍繞Java郵件API,如Apache郵件API –

回答

0

你想以什麼方式「更好」?

您可以使用多個線程並行發送更多郵件, 直到郵件服務器允許的限制。

+0

一些包裝假設,如果我們有不同的一組消息,如何向他們發送單推。而不是逐個發送。 – vairam

+0

我不明白「不同的消息集」。如果要在郵件的「收件人」標題中列出郵件的收件人,則需要爲每個收件人或一組收件人發送不同的郵件。如果您未包含收件人(這會使您的郵件看起來更像垃圾郵件),則可以通過將收件人作爲第二個參數傳遞給sendMessage,將單個郵件發送給許多收件人。 –

+0

需要將發票編號1通知發送給5位成員,並將發票編號2發送給另一組5位成員。假設這是場景,我需要在一次推送中發送這兩個不同的集合,而不是使用sendMessage方法逐個發送它們。我有什麼辦法可以一次發送這些消息。 – vairam

0

您可以使用線程池,因爲它提供了非常好的性能。我已經實現並共享下面的代碼片段。

try { 
    ExecutorService executor = Executors.newFixedThreadPool("no. of threads");  
    // no. of threads is depend on your cpu/memory usage it's better to test with diff. no. of threads. 
    Runnable worker = new MyRunnable(message); 
    // message is the javax.mail.Message 
    executor.execute(worker); 
    executor.shutdown();  
    executor.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); 
} 
+0

請花時間在您的答案中正確地格式化代碼,謝謝。 –

相關問題