为什么我要在电子邮件中发送一个文件的副本?

时间:2012-04-05 11:16:11

标签: java file email directory

我在“bar”目录中有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);

1 个答案:

答案 0 :(得分:4)

您有一个错误:您希望循环为

for (int i = 0; i < f.listFiles().length; i++){

for (int i = 0; i <= f.listFiles().length -1; i++){

你还有两行说

multipart.addBodyPart(messageBodyPart);

这就是为什么你让bodypart包含第一个文件两次。