IMAP: handle optional datereceived parameter on append

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@334 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2009-02-05 17:15:30 +00:00
parent ab63b284dd
commit d7845a25aa
2 changed files with 12 additions and 3 deletions

View File

@ -34,7 +34,7 @@ import java.util.*;
public class ExchangeSession {
protected static final Logger LOGGER = Logger.getLogger("davmail.exchange.ExchangeSession");
protected static final SimpleTimeZone GMT_TIMEZONE = new SimpleTimeZone(0, "GMT");
public static final SimpleTimeZone GMT_TIMEZONE = new SimpleTimeZone(0, "GMT");
/**
* exchange message properties needed to rebuild mime message
@ -116,6 +116,7 @@ public class ExchangeSession {
// SimpleDateFormat are not thread safe, need to create one instance for
// each session
dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormatter.setTimeZone(GMT_TIMEZONE);
dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
dateParser.setTimeZone(GMT_TIMEZONE);
@ -597,6 +598,8 @@ public class ExchangeSession {
patchMethod.addPropertyToSet("x0E070003", entry.getValue(), "f", "http://schemas.microsoft.com/mapi/proptag/");
} else if ("deleted".equals(entry.getKey())) {
patchMethod.addPropertyToSet("isdeleted", entry.getValue(), "d", "DAV:");
} else if ("datereceived".equals(entry.getKey())) {
patchMethod.addPropertyToSet("datereceived", entry.getValue(), "e", "urn:schemas:httpmail:");
}
}
}

View File

@ -16,6 +16,7 @@ import java.net.Socket;
import java.net.SocketTimeoutException;
import java.net.SocketException;
import java.util.*;
import java.text.SimpleDateFormat;
/**
* Dav Gateway smtp connection implementation.
@ -305,10 +306,15 @@ public class ImapConnection extends AbstractConnection {
properties.put("junk", "1");
}
}
// skip optional date
// TODO : replace datereceived
// handle optional date
String dateOrSize = tokens.nextToken();
if (tokens.hasMoreTokens()) {
SimpleDateFormat dateParser = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss Z", Locale.ENGLISH);
Date dateReceived = dateParser.parse(dateOrSize);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
dateFormatter.setTimeZone(ExchangeSession.GMT_TIMEZONE);
properties.put("datereceived", dateFormatter.format(dateReceived));
dateOrSize = tokens.nextToken();
}
int size = Integer.parseInt(dateOrSize);