2017-05-31 65 views
2

我正在循環發送電子郵件並重復該循環。目前,成功的消息使用如何在每次迭代後發送成功消息

request.getSession().setAttribute("message", resultMessage); 
response.sendRedirect("index.jsp"); 

我想在JSP頁面中每個成功的迭代後,顯示成功消息發送的所有電子郵件後顯示。

迭代代碼的servlet類:

try {    
    for(int j=0;j<noOfEmailToSend;j++) { 
     Iterator<String> sendersInputIterate = list.iterator(); 
     Iterator<String> subject1 = sub.iterator(); 

     while (sendersInputIterate.hasNext() && subject1.hasNext()) { 
      EmailFunction.sendEmail(ExchangeIP, port, sendersInputIterate.next(), toAddress, subject1.next(), content, uploadedFiles); 
      resultMessage = "The B-mail has been sent successfully :"; 
      Thread.sleep(sleeptime); 
     } 

     Thread.sleep(iterationInterval); 
    }           
} catch (Exception ex) { 
    ex.printStackTrace();    
    resultMessage = "There were an error: " + ex.getMessage(); 
} finally { 
    request.getSession().setAttribute("message", resultMessage); 
    response.sendRedirect("index.jsp"); 
} 

請建議如何在每次迭代後顯示此消息。

+1

@coolgirl'finally' will ** always ** be executed([參考](https:// stackov erflow.com/questions/44280902/unsorted-results-when-using-array-sort-with-two-argument))。所以,即使有'Exception'...在那裏顯示'SuccessMessage'也是錯誤的。 –

+0

@FelixD。我想你已經曲解了我所提到的。我知道一個finally只會在system.exit()的特定情況下才會被執行,或者可能是系統或其他東西不能正常工作的地方。上面發佈的代碼只發送一次成功消息,並且在發生故障的情況下發送成功消息。我所建議的是將代碼從finally塊移到循環所在的地方,msg因發送的每封成功郵件而被解僱! –

+0

這將使更多的意義:P - 我想這也是答案,所以你可以張貼作爲一個真正的答案。 –

回答

1

有一個快速的解決方案,它是:而不是在servlet中創建循環, 使客戶端的循環執行ajax請求,將您的電子郵件放入javascript數組中,然後在循環中迭代數組然後發送它們與Servlet一個接一個,你可以檢測的天氣,如果郵件發送成功或有故障時,該servlet可以發送一封電子郵件每個請求 和輸出流可以每個請求

在這裏打一個時間就是一個例子:

var emails=new Array(); 
emails.push("[email protected]"); 
emails.push("[email protected]"); 
emails.push("[email protected]"); 
$(document).ready(function(){ 
// first param is the url which will you send the param 
//second param the email which will you send and in this case you have to pull it by request.getParameter("email"); 
third param the response which you got from servlet weather success or fail 
for(i=0;i<emails.size();i++){ 
$.post("SendEmailServlet",{email: emails[i]},function(data){ 
// third param the response from servlet 
}) 
}) 
} 
+0

謝謝。 BT我完全是新的Ajax ..可以請你解釋示例代碼迭代在客戶端。 – Dip

+0

檢查我的更新答案 –

相關問題