diff --git a/src/java/davmail/exchange/dav/DavExchangeSession.java b/src/java/davmail/exchange/dav/DavExchangeSession.java index 557b17cf..86505295 100644 --- a/src/java/davmail/exchange/dav/DavExchangeSession.java +++ b/src/java/davmail/exchange/dav/DavExchangeSession.java @@ -2748,6 +2748,7 @@ public class DavExchangeSession extends ExchangeSession { messageProperties.add(Field.getPropertyName("to")); messageProperties.add(Field.getPropertyName("cc")); messageProperties.add(Field.getPropertyName("subject")); + messageProperties.add(Field.getPropertyName("date")); messageProperties.add(Field.getPropertyName("htmldescription")); messageProperties.add(Field.getPropertyName("body")); PropFindMethod propFindMethod = new PropFindMethod(URIUtil.encodePath(message.permanentUrl), messageProperties, 0); @@ -2761,6 +2762,10 @@ public class DavExchangeSession extends ExchangeSession { if (propertyValue != null) { mimeMessage.addHeader("Content-class", propertyValue); } + propertyValue = getPropertyIfExists(properties, "date"); + if (propertyValue != null) { + mimeMessage.setSentDate(parseDateFromExchange(propertyValue)); + } propertyValue = getPropertyIfExists(properties, "from"); if (propertyValue != null) { mimeMessage.addHeader("From", propertyValue); @@ -3063,4 +3068,16 @@ public class DavExchangeSession extends ExchangeSession { } return result; } + + protected Date parseDateFromExchange(String exchangeDateValue) throws DavMailException { + Date result = null; + if (exchangeDateValue != null) { + try { + result = getExchangeZuluDateFormatMillisecond().parse(exchangeDateValue); + } catch (ParseException e) { + throw new DavMailException("EXCEPTION_INVALID_DATE", exchangeDateValue); + } + } + return result; + } } diff --git a/src/java/davmail/exchange/ews/EwsExchangeSession.java b/src/java/davmail/exchange/ews/EwsExchangeSession.java index e86dd5aa..9fd238e4 100644 --- a/src/java/davmail/exchange/ews/EwsExchangeSession.java +++ b/src/java/davmail/exchange/ews/EwsExchangeSession.java @@ -521,12 +521,14 @@ public class EwsExchangeSession extends ExchangeSession { getItemMethod.addAdditionalProperty(Field.get("to")); getItemMethod.addAdditionalProperty(Field.get("cc")); getItemMethod.addAdditionalProperty(Field.get("subject")); + getItemMethod.addAdditionalProperty(Field.get("date")); getItemMethod.addAdditionalProperty(Field.get("body")); executeMethod(getItemMethod); EWSMethod.Item item = getItemMethod.getResponseItem(); MimeMessage mimeMessage = new MimeMessage((Session) null); mimeMessage.addHeader("Content-class", item.get(Field.get("contentclass").getResponseName())); + mimeMessage.setSentDate(parseDateFromExchange(item.get(Field.get("date").getResponseName()))); mimeMessage.addHeader("From", item.get(Field.get("from").getResponseName())); mimeMessage.addHeader("To", item.get(Field.get("to").getResponseName())); mimeMessage.addHeader("Cc", item.get(Field.get("cc").getResponseName())); @@ -2186,6 +2188,18 @@ public class EwsExchangeSession extends ExchangeSession { return contacts; } + protected Date parseDateFromExchange(String exchangeDateValue) throws DavMailException { + Date dateValue = null; + if (exchangeDateValue != null) { + try { + dateValue = getExchangeZuluDateFormat().parse(exchangeDateValue); + } catch (ParseException e) { + throw new DavMailException("EXCEPTION_INVALID_DATE", exchangeDateValue); + } + } + return dateValue; + } + protected String convertDateFromExchange(String exchangeDateValue) throws DavMailException { String zuluDateValue = null; if (exchangeDateValue != null) {