2017-12-04 23 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에 의해 customed 된 emlBytes를 전달하는 방법을 모른다. 내가 무엇을 할 수 있을지?

답변

0

MimeMessage는 InputStream에서 가져온 것이기 때문에 원본 데이터 소스를 변경하지 않습니다. 그러나 MimeMessage.writeTo 메서드를 사용하여 업데이트 된 메시지를 OutputStream에 쓸 수 있습니다 (예 :

).