2013-10-22 61 views
0

我創建了一個動態追加行的html頁面。 我創建了一個字符串數組來獲取值到servlet中。 現在,我正在嘗試給所有這些值發送一封電子郵件給自己。 爲此,我在我的servlet中使用java郵件API。 我如何給 message.setText()中的數組的字符串;如何在java電子郵件中插入語句

如果不可能,用字符串數組發送電子郵件有什麼不同的方法。

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("[email protected]", "xyz"); 
       } 
      }); 

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse("[email protected]")); 
     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

使用所需數據發送CSV文件(附件),您可以忘記HTML郵件(僅在需要時)。 –

+0

@PaulVargas並非所有最終用戶都感覺良好,可以打開並解析用於閱讀電子郵件的csv = \ –

回答

1

HTML中沒有循環。

您應該使用像Velocity這樣的模板解決方案來生成電子郵件正文,方法是循環播放動態數據,然後發送結果。

Use Velocity to generate HTML based email

+2

你誤解了這個問題嗎?還是我? –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀServlet不適合爲電子郵件生成HTML內容。由於維護原因,使用速度或其他庫的HTML模板會更好。請記住,在MVC中,視圖邏輯必須位於視圖中,在這種情況下,位於電子郵件HTML生成器中,而Servlet是僅收集要在視圖中使用的數據的控制器。 –

+0

我給了一個答案,你沒有。我不知道你在想什麼。我有時會以太快的速度誤解問題,所以可能是我。 – duffymo