2014-02-21 26 views
0

我發送了電子郵件,使用javax.mail爲什麼java servlet將2個文件附加到電子郵件中,但兩者都是相同的?

這裏是我的連接

private static void addAttachment(MimeBodyPart messageBodyPart, Multipart multipart, String fileName, File fileToAttach) throws MessagingException{ 
    DataSource source = new FileDataSource(fileToAttach); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(fileName); 
    multipart.addBodyPart(messageBodyPart); 

} 

的方法,我使用MySQL來設置文件名,並從網址查詢文件下載這樣

rs = st.executeQuery("SELECT url, id, name FROM db WHERE surl != '' LIMIT 2 "); 

    while(rs.next()){ 
     String fileName = rs.getString("name") + rs.getString("id") + ".png"; 
     out.println(rs.getString("url")); 
     url = new URL(rs.getString("url")); 
     f = new File("C:\\Users\\Desktop\\asAttach"+ rs.getString("id") +".png"); 

     FileUtils.copyURLToFile(url, f); 

     addAttachment(messageBodyPart, multipart, fileName, f);    
    } 

他們不斷附加兩個文件,但兩者都是一樣的。

+2

你是否檢查過你的分貝查詢返回的數據?有多少條記錄被返回?爲什麼「LIMIT 2」如果你只需要一個? –

+0

我正在嘗試將多個圖像附加到一封電子郵件中。圖像使用db中的'url'下載。然後他們被附上。我使用'LIMIT 2'的原因是因爲我想將2個圖像附加到電子郵件。 –

回答

0

這裏是我如何得到它的工作。

private static void addAttachment(Multipart multipart, String fileName, String filePath) throws MessagingException{ 
    MimeBodyPart messageBodyPart = new MimeBodyPart(); 
    messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(filePath); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(fileName); 
    multipart.addBodyPart(messageBodyPart); 

} 

我沒給這個方法MimeBodyPart。

這裏是我如何使用它。

  URL url = new URL(rs.getString("url")); 
      File f = new File("C:\\Users\\Desktop\\asAttach"+ rs.getString("id") +".png"); 

      FileUtils.copyURLToFile(url, f); 

      addAttachment(multipart, fileName, f.toString()); 

你可以在一個循環中使用它並附加儘可能多的文件。