我创建了一个动态附加行的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组值。
答案 0 :(得分:1)
HTML中没有循环。
您应该使用像Velocity这样的模板解决方案,通过循环动态数据然后发送结果来生成电子邮件正文。
答案 1 :(得分:1)