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(".")); + } }