如何计算每封发送的电子邮件

时间:2017-06-21 06:55:13

标签: java javamail

我写了一个代码,用于将多个发件人(在列表中创建)发送给一个收件人。我可以多次迭代该列表。现在我想为列表中的每个emailID显示计数,例如。 abc1@d.com count = 2,abc2 @ d.com count = 3。

我是个生物人。请建议一种方法来做到这一点。 下面是我发送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 :(得分:0)

回应你的评论

  你可以告诉我有关使用地图的详细信息。

地图界面由oracle覆盖: https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

这是使用地图根据字符串值进行计数的一个非常基本的示例。请注意,这个例子假设电子邮件区分大小写(我认为这应该是,但大多数实现会认为它们不是,我会把它作为练习让你弄清楚如何使它们成为案例不敏感的)

public class EmailCounter {

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

    public static void main(final String[] args) {
        EmailCounter emailCounter = new EmailCounter();
        emailCounter.addToMailCount("email1@mail.com");
        emailCounter.addToMailCount("email1@mail.com");
        emailCounter.addToMailCount("email1@mail.com");
        emailCounter.addToMailCount("email2@mail.com");

        System.out.println("email1@email.com was mailed " + emailCounter.getEmailCount("email1@mail.com") + " times");
        System.out.println("email2@email.com was mailed " + emailCounter.getEmailCount("email2@mail.com") + " times");
        System.out.println("email2@email.com was mailed " + emailCounter.getEmailCount("email3@mail.com") + " 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();
    }

}

输出结果为:

email1@email.com was mailed 3 times
email2@email.com was mailed 1 times
email2@email.com was mailed 0 times