IMAP: fix 3023386, support BODY.PEEK[1.MIME] partial fetch

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1123 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2010-07-02 06:45:12 +00:00
parent 795989445e
commit c3430975c4
3 changed files with 9 additions and 1 deletions

View File

@ -158,7 +158,6 @@ public class EwsExchangeSession extends ExchangeSession {
protected Message buildMessage(EWSMethod.Item response) throws URIException { protected Message buildMessage(EWSMethod.Item response) throws URIException {
Message message = new Message(); Message message = new Message();
message.size = response.getInt(FIELD_MAP.get("messageSize").getResponseName()); message.size = response.getInt(FIELD_MAP.get("messageSize").getResponseName());
message.uid = response.get(FIELD_MAP.get("uid").getResponseName()); message.uid = response.get(FIELD_MAP.get("uid").getResponseName());
message.imapUid = response.getLong(FIELD_MAP.get("imapUid").getResponseName()); message.imapUid = response.getLong(FIELD_MAP.get("imapUid").getResponseName());

View File

@ -649,6 +649,10 @@ public class ImapConnection extends AbstractConnection {
MimePart bodyPart = mimeMessage; MimePart bodyPart = mimeMessage;
String[] partIndexStrings = partIndexString.split("\\."); String[] partIndexStrings = partIndexString.split("\\.");
for (String subPartIndexString : partIndexStrings) { for (String subPartIndexString : partIndexStrings) {
// ignore MIME subpart index, will return full part
if ("MIME".equals(subPartIndexString)) {
break;
}
int subPartIndex; int subPartIndex;
// try to parse part index // try to parse part index
try { try {

View File

@ -224,6 +224,11 @@ public class TestImap extends AbstractDavMailTestCase {
assertEquals(". OK UID FETCH completed",readFullAnswer(".")); assertEquals(". OK UID FETCH completed",readFullAnswer("."));
} }
public void testPartialFetch() throws IOException {
writeLine(". UID FETCH "+messageUid+" (BODY.PEEK[1.MIME])");
assertEquals(". OK UID FETCH completed",readFullAnswer("."));
}
public void testDeleteFolder() throws IOException { public void testDeleteFolder() throws IOException {
writeLine(". DELETE testfolder"); writeLine(". DELETE testfolder");