bbottema / simple-java-mail

Simple API, Complex Emails (Jakarta Mail smtp wrapper)
http://www.simplejavamail.org
Apache License 2.0
1.2k stars 261 forks source link

Wrong sent date when parsing mail #534

Open Faelean opened 3 weeks ago

Faelean commented 3 weeks ago

I've found a strange case where the sent date when looking at the Email Object is different than the one Outlook shows.

String msgFileName = ".\\assets_sjm\\test.msg";

try (FileInputStream fileInputStream = new FileInputStream(msgFileName)) {
    Email email = EmailConverter.outlookMsgToEmail(fileInputStream);
    System.out.println("Sent Date: " + email.getSentDate());
}

Sent Date: Mon Jun 10 08:46:28 CEST 2024 When I open the file in Outlook the sent date is 04.06.2024 15:31

The strange thing for me is that only one customer is able to produce these kind of mails, I haven't manage to create one myself.

The mail is exported from Outlook via Drag&Drop to our software, which then shows the sent date as the exact time when the mail was exported. This behaviour persists when downloading the file from their instance and then uploading it into another instance. If I download the mail and open it in Outlook the correct sent date is displayed. When I drag the file on to Outlook the mail is sorted with the expected sent date, if I export it again from my Outlook and put in our software the correct date is shown and running the example from above the output is Sent Date: Tue Jun 04 15:31:19 CEST 2024

test.zip

bbottema commented 3 weeks ago

I had a quick look how this field is populated right now:

builder.fixingSentDate(ofNullable(outlookMessage.getClientSubmitTime())
    .orElse(outlookMessage.getDate())); // TODO creation date?

I'm not sure this is correct. Probably not, considering your bug and the TODO question...