0
我有2個文件在目錄「欄」進行測試。從下面的代碼中,假設將該目錄中的所有文件作爲電子郵件附件發送。問題是,當我發送它們時,我的電子郵件中會收到一個文件的重複項。在測試之前,我確實有過一次正確的工作,但我不記得我可能會改變什麼。我爲什麼要在電子郵件中發送一個文件的副本?
有人認識到我的代碼可能有問題,或者爲什麼我不發送目錄中的所有文件,我在我的電子郵件中多次獲取一個文件?
這裏是我的代碼:
multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
File f = new File("C:\\foo\\bar");
File[] attachments = f.listFiles();
//email with attachments (if any)
for(int i = 0; i < f.listFiles().length - 1; i++){
DataSource fileDataSource = new FileDataSource(attachments[i]);
messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
messageBodyPart.setFileName(attachments[i].getName());
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);
message.setSentDate(new Date());
Transport.send(message);
沒有明白,謝謝。但刪除負面和重複後,現在它顯示最後一個文件兩次...任何想法?任何需要看到的東西都能揭示一些光明? – SpicyWeenie 2012-04-05 11:44:51
還有另一條評論,現在刪除,注意到你不在循環中創建新的messageBodyPart實例。您似乎對所有文件重複使用了相同的messageBodyPart,這意味着在循環的第一次迭代中,您現在將該messageBodyPart的內容設置爲file1,然後在第二次迭代中將內容設置爲file2。它被添加到多部分兩次,因此你有最後一個文件兩次。如果有10個文件,它將是第10個文件的10倍。 – Confusion 2012-04-05 12:26:07
剛起牀。好的,我移動了multipart.addBodyPart(messageBodyPart);在循環之外。現在我只收到一次發送到我的電子郵件的最後一個文件。 – SpicyWeenie 2012-04-05 15:28:29