MimeMessage 更改现有邮件上的发送数据

MimeMessage change the sendData on existing Mail

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);