如何在java电子邮件中插入for语句

时间:2013-10-22 14:56:11

标签: java html email servlets

我创建了一个动态附加行的html页面。 我创建了一个字符串数组来将值传入servlet。 现在,我正在尝试向所有这些值发送电子邮件给自己。 为此我在我的servlet中使用java mail API。 我怎样才能给出数组中的数组 message.setText();

如果不可能,使用字符串数组发送电子邮件的方法有哪些。

String[] items = request.getParameterValues("Item");
    String[] categories = request.getParameterValues("Category");
    String[] names = request.getParameterValues("Name");
    String[] quantities = request.getParameterValues("Quantity");

    System.out.println("************ExperimentServlet************");

    for (String item : items) {
    System.out.println("Item is : "+item);
    }

    for(String category : categories) {
    System.out.println("Category is : "+category);
    }

    for(String name : names) {
    System.out.println("Name is : "+name);
    }

    for(String quantity : quantities) {
    System.out.println("Quantity is : "+quantity);
    }


    for(int i=0; i<20; i++) {
        System.out.println("Item 1 is :" + items[i]);
        System.out.println("Category 1 is :"+ categories[i]);
        System.out.println("Name 1 is :"+ names[i]);
        System.out.println("Quantity 1 is : "+quantities[i]);

    }

Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("abcdef@gmail.com", "xyz");
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("abcdef@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("jklm@gmail.com"));
        message.setSubject("My eMail First Example");
        message.setText("Dear Mail Crawler,"
                + "\n\n No spam to my email, please!"
           + "\n\n" + items[i] + "  " + categories[i]+ "    "+ names[i]+ "  "+ quantities[i]


                );

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

}

如果我这样做,我能够发送值小于20的值的电子邮件,但事实是它显示数组索引超出范围异常,如果我提供少于20组的值。无法保证每个用户提供20组值。

2 个答案:

答案 0 :(得分:1)

HTML中没有循环。

您应该使用像Velocity这样的模板解决方案,通过循环动态数据然后发送结果来生成电子邮件正文。

Use Velocity to generate HTML based email

答案 1 :(得分:1)