From 7a371723ee0b00fd586012f7d09103730454f5a5 Mon Sep 17 00:00:00 2001 From: mguessan Date: Wed, 12 Jun 2013 16:38:05 +0000 Subject: [PATCH] IMAP: fix missing headers with Outlook git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2141 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- .../davmail/exchange/ExchangeSession.java | 7 ++++- src/test/davmail/imap/TestImap.java | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index 00ac6007..9cefabe5 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1964,7 +1964,12 @@ public abstract class ExchangeSession { public Enumeration getMatchingHeaderLines(String[] headerNames) throws MessagingException, IOException { Enumeration result = getMatchingHeaderLinesFromHeaders(headerNames); if (result == null) { - result = getMimeMessage().getMatchingHeaderLines(headerNames); + if (headerNames == null) { + result = getMimeMessage().getAllHeaderLines(); + } else { + result = getMimeMessage().getMatchingHeaderLines(headerNames); + } + } return result; } diff --git a/src/test/davmail/imap/TestImap.java b/src/test/davmail/imap/TestImap.java index 29ddf1b1..020c7fa6 100644 --- a/src/test/davmail/imap/TestImap.java +++ b/src/test/davmail/imap/TestImap.java @@ -515,4 +515,30 @@ public class TestImap extends AbstractImapTestCase { assertEquals(". OK UID FETCH completed", readFullAnswer(".")); } + public void testDoubleHeaderBodyFetch() throws IOException { + writeLine(". SELECT INBOX"); + assertEquals(". OK [READ-WRITE] SELECT completed", readFullAnswer(".")); + writeLine(". UID FETCH 51241 BODY.PEEK[TEXT]"); + String line = socketReader.readLine(); + int size = 0; + while (!line.startsWith(".")) { + line = socketReader.readLine(); + size += line.length()+2; + } + System.out.println("actual size "+size); + } + + public void testBodyHeaderFetch() throws IOException { + writeLine(". SELECT INBOX"); + assertEquals(". OK [READ-WRITE] SELECT completed", readFullAnswer(".")); + writeLine(". UID FETCH 1:* BODY[HEADER]"); + assertEquals(". OK UID FETCH completed", readFullAnswer(".")); + } + + public void testOutlookHeaderFetch() throws IOException { + writeLine(". SELECT INBOX"); + assertEquals(". OK [READ-WRITE] SELECT completed", readFullAnswer(".")); + writeLine(". UID FETCH 1:* (UID FLAGS RFC822.SIZE BODY.PEEK[HEADER] INTERNALDATE)"); + assertEquals(". OK UID FETCH completed", readFullAnswer(".")); + } }