我写了一个代码,用于将多个发件人(在列表中创建)发送给一个收件人。我可以多次迭代该列表。现在我想为列表中的每个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);
}
}
答案 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