2017-12-04 6 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(); 

}Mimemessage die auf den bestehenden E-Mail senddata ändern

Ich habe das Sendedatum auf bestehende E-Mail-Datei zu ändern. Aber nach der Ausführung hat die Datei das gleiche Datum wie zuvor. Es wird nicht das neue Sendedatum angezeigt. Ich denke, das liegt daran, dass mimeMessage eine neue Instanz erstellt, aber die emlBytes nicht ändert, aber ich muss ein emlBytes in output.write() übergeben. Ich weiß nicht, wie ich die emlBytes übergeben kann, die von mimeMessage angepasst wurden. Was kann ich tun?

Antwort

0

MimeMessage wird die ursprüngliche Quelle der Daten nicht ändern, da sie von einem InputStream kommt. Sie können jedoch die Methode MimeMessage.writeTo verwenden, um die aktualisierte Nachricht in einen OutputStream zu schreiben, z. B.

mimeMessage.writeTo(output); 
Verwandte Themen