0

我在目录“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);
4

1 回答 1

3

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

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

或者

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

你也有两行说

multipart.addBodyPart(messageBodyPart);

这就是为什么你有两次包含第一个文件的正文部分。

于 2012-04-05T11:23:25.787 回答