2017-06-21 53 views
-1

我寫了一個由多個發件人(創建於列表中)向一個收件人發送電子郵件的代碼。我可以多次迭代該列表。現在我想顯示例如列表中每個電子郵件ID的計數。 [email protected] count = 2,[email protected] count = 3。如何獲得發送的每封電子郵件的計數

我是一個bigenner。請建議一種方法來做到這一點。下面是 是我的代碼發送eamil。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     System.out.println(request.getParameter("toAddress")); 
     List<File> uploadedFiles= saveUploadedFiles(request); 
     System.out.println(request.getParameter("email")); 
     System.out.println("Reached servlet"); 
     response.getWriter().print("Hello"+request.getParameter("email")); 

     System.out.println("hii"+request.getParts()); 
     //List<File> uploadedFiles= saveUploadedFiles(request); 
     String toAddress=request.getParameter("toAddress"); 
     String subject=request.getParameter("subject"); 
     String content=request.getParameter("content"); 
     int sleeptime=Integer.parseInt(request.getParameter("emailInterval")); 
     int noOfEmailToSend=Integer.parseInt(request.getParameter("noOfEmailToSend")); 
     int iterationInterval=Integer.parseInt(request.getParameter("iterationInterval")); 
     String resultMessage = ""; //null 

     HttpSession session = request.getSession(false); 
     List<String> list = (List<String>) session.getAttribute("name"); 


     System.out.println(list); 


     List<String> sub=new ArrayList<String>(); 
     for(int i=1;i<=noOfEmailToSend;i++) 
     { 
      StringBuilder sb = new StringBuilder(); 
       sb.append(subject).append(i); 
       sub.add(sb.toString()); 
     }   
     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.setAttribute("Message", resultMessage);    
         getServletContext().getRequestDispatcher("/result.jsp").forward(request, response); 
       }     
     } 
+1

你有沒有嘗試使用地圖? –

+0

no..i使用了數組列表創建發件人ID – Dip

+0

'Map ' - key - emailID;價值 - 計數器 –

回答

0

在回答您的評論

可以請你告訴我詳細介紹一下使用地圖。 https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

下面是使用地圖的一個非常基本的例子來算基於字符串值:

Map接口是由Oracle這裏覆蓋。請注意,這個例子假定電子郵件是區分大小寫的(我相信這應該是,但大多數實現會假設它們不是,我將把它作爲一個練習讓你瞭解如何使它們成爲案例不區分大小寫)

public class EmailCounter { 

    private Map<String, Integer> destinationEmailCount = new HashMap<>(); 

    public static void main(final String[] args) { 
     EmailCounter emailCounter = new EmailCounter(); 
     emailCounter.addToMailCount("[email protected]"); 
     emailCounter.addToMailCount("[email protected]"); 
     emailCounter.addToMailCount("[email protected]"); 
     emailCounter.addToMailCount("[email protected]"); 

     System.out.println("[email protected] was mailed " + emailCounter.getEmailCount("[email protected]") + " times"); 
     System.out.println("[email protected] was mailed " + emailCounter.getEmailCount("[email protected]") + " times"); 
     System.out.println("[email protected] was mailed " + emailCounter.getEmailCount("[email protected]") + " times"); 
    } 

    public void addToMailCount(final String emailAddress) { 
     Integer existingCount = destinationEmailCount.get(emailAddress); 
     if (existingCount != null) { 
      destinationEmailCount.put(emailAddress, Integer.valueOf(existingCount.intValue() + 1)); 
      return; 
     } 
     destinationEmailCount.put(emailAddress, Integer.valueOf(1)); 
    } 

    public int getEmailCount(final String emailAddress) { 
     Integer count = destinationEmailCount.get(emailAddress); 
     return count == null ? 0 : count.intValue(); 
    } 

} 

輸出是:

[email protected] was mailed 3 times 
[email protected] was mailed 1 times 
[email protected] was mailed 0 times 
+0

但在這裏我有一個emailId的aaraylist這種情況下該怎麼做.. – Dip

+0

您正在使用不合適的集合。 List僅僅是一個值的集合,ArrayList使用一個數組來存儲這些值。另一方面,地圖使用鍵值對的概念。上面的例子向您展示瞭如何將電子郵件地址用作關鍵字,並將計數用作值。 – Goibniu

相關問題