2017-06-21 90 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

相关问题