0
私はテストのためにディレクトリ "bar"に2つのファイルを持っています。下のコードから、そのディレクトリにあるすべてのファイルを電子メールの添付ファイルとして送信すると仮定します。問題は、私がそれらを送信すると、私は電子メールに1つのファイルの重複を取得することです。私はテストのために以前は一度正しく動作していましたが、私が何を変更したかも覚えていません。1つのファイルの複製を電子メールで送信するのはなぜですか?
私のコードに何が間違っているのか、ディレクトリ内のすべてのファイルを送信するのではなく、なぜ私の電子メールに複数のファイルがあるのでしょうか?ここで
は私のコードです:
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);
それを捕まえていない、ありがとう。しかし、負のものと重複を取り除いた後、最後のファイルを2回表示します...アイデアはありますか?何か光を当てるために見なければならないものは何ですか? – SpicyWeenie
ループ内に新しいmessageBodyPartインスタンスを作成しないことに注意して、今削除されたコメントがもう1つありました。あなたは、すべてのファイルに対して同じmessageBodyPartを再利用しているようです。つまり、ループの最初の反復で、そのmessageBodyPartの内容をfile1に設定し、次に2回目の反復で内容をfile2に設定します。これはマルチパートに2回追加されるため、最後のファイルが2回あります。ファイルが10個ある場合、10番目のファイルは10回になります。 – Confusion
ちょうど目が覚めた。私はmultipart.addBodyPart(messageBodyPart)を移動しました。ループの外側にあります。今度は私の電子メールに最後に送られたファイルを一度入手します。 – SpicyWeenie