Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我要在电子邮件中发送一个文件的副本?_Java_File_Email_Directory - Fatal编程技术网

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

Java 为什么我要在电子邮件中发送一个文件的副本?,java,file,email,directory,Java,File,Email,Directory,我在目录“bar”中有2个文件用于测试。根据下面的代码,假设将该目录中的所有文件作为电子邮件附件发送。问题是,当我发送它们时,我会在电子邮件中收到一个文件的副本。在测试之前,我确实让它正常工作过一次,但我不记得我可能改变了什么 有人知道我的代码可能有什么问题吗?或者为什么我没有发送目录中的所有文件,而是在电子邮件中多次收到一个文件 这是我的密码: multipart = new MimeMultipart(); multipart.addBodyPart(mess

我在目录“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);
multipart=new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
文件f=新文件(“C:\\foo\\bar”);
文件[]附件=f.listFiles();
//带附件的电子邮件(如有)
对于(int i=0;i
您有一个off by one错误:您希望循环为

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

这就是为什么两次使用包含第一个文件的bodypart。

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

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

这就是为什么您两次使用包含第一个文件的bodypart。

没有捕捉到,谢谢。但在删除负片和副本后,现在它会显示最后一个文件两次。。。有什么想法吗?有什么需要注意的吗?还有另一条评论,现在被删除了,它指出您没有在循环中创建新的messageBodyPart实例。您似乎在对所有文件重用相同的messageBodyPart,这意味着在循环的第一次迭代中,您现在将该messageBodyPart的内容设置为file1,然后在第二次迭代中,将内容设置为file2。它被添加到多部分两次,因此最后一个文件有两次。如果有10个文件,它将是第10个文件10次。刚刚醒来。好的,我移动了multipart.addBodyPart(messageBodyPart);在循环之外。现在我只收到了一次发送到我邮箱的最后一个文件。我找到了答案。我确实需要一份多部分的副本。下面是关于显示它的完整教程。现在我可以用正确的方式发送文件了。我没听清楚,谢谢。但在删除负片和副本后,现在它会显示最后一个文件两次。。。有什么想法吗?有什么需要注意的吗?还有另一条评论,现在被删除了,它指出您没有在循环中创建新的messageBodyPart实例。您似乎在对所有文件重用相同的messageBodyPart,这意味着在循环的第一次迭代中,您现在将该messageBodyPart的内容设置为file1,然后在第二次迭代中,将内容设置为file2。它被添加到多部分两次,因此最后一个文件有两次。如果有10个文件,它将是第10个文件10次。刚刚醒来。好的,我移动了multipart.addBodyPart(messageBodyPart);在循环之外。现在我只收到了一次发送到我邮箱的最后一个文件。我找到了答案。我确实需要一份多部分的副本。下面是关于显示它的完整教程。现在我可以用正确的方式发送文件了。
multipart.addBodyPart(messageBodyPart);