2017-12-04 16 views
1
try (
      FileInputStream input = new FileInputStream(source); 
      FileOutputStream output = new FileOutputStream(target); 
    ) { 
     byte[] emlBytes = IOUtils.toByteArray(input); 
     Message mimeMessage = createMimeMessage(emlBytes); 

     String date = "Wed, 16 Oct 2013 11:25:07 +0200"; 
     mimeMessage.setHeader("Date", date); 
     System.out.println(mimeMessage.getSentDate()); 
     output.write(emlBytes); 

    } catch (MessagingException e) { 
     e.printStackTrace(); 

}上のsendDataを変更で、MimeMessageは、既存のメール

私は、既存の電子メールファイルの送信日を変更する必要があります。しかし、実行後、ファイルは以前と同じ日付になります。それは、新しい送信日を取得しません。 mimeMessageは新しいインスタンスを作成するが、emlBytesを変更しないためだと思いますが、emlBytesをoutput.write()に渡す必要があります。mimeMessageによってカスタマイズされたemlBytesを渡す方法はわかりません。私に何ができる?

答えて

0

MimeMessageは、InputStreamから来ているため、データの元のソースを変更しません。しかし、MimeMessage.writeToメソッドを使用して、更新されたメッセージをOutputStreamに書き込むことができます。たとえば、

mimeMessage.writeTo(output); 
関連する問題