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();
}
我必须更改现有电子邮件文件的发送日期。但是执行后,文件的日期与以前相同。它没有获得新的发送日期。我认为这是因为mimeMessage创建了一个新实例,但没有更改emlBytes,但我必须在output.write()中传递一个emlBytes,我不知道如何传递由mimeMessage定制的emlBytes。我能做什么?
最佳答案
MimeMessage不会更改数据的原始来源,因为它来自InputStream。但是您可以使用MimeMessage.writeTo
方法将更新后的消息写入OutputStream,例如,
mimeMessage.writeTo(output);