diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 4ff76605..510d9a2d 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -314,13 +314,12 @@ public class ImapConnection extends AbstractConnection { } else if ("search".equalsIgnoreCase(subcommand)) { List uidList = handleSearch(tokens); - if (uidList.isEmpty()) { - sendClient("* SEARCH"); - } else { - for (long uid : uidList) { - sendClient("* SEARCH " + uid); - } + StringBuilder buffer = new StringBuilder("* SEARCH"); + for (long uid : uidList) { + buffer.append(' '); + buffer.append(uid); } + sendClient(buffer.toString()); sendClient(commandId + " OK SEARCH completed"); } else if ("store".equalsIgnoreCase(subcommand)) { diff --git a/src/test/davmail/imap/TestImap.java b/src/test/davmail/imap/TestImap.java index 2af6cd31..9bf45c2c 100644 --- a/src/test/davmail/imap/TestImap.java +++ b/src/test/davmail/imap/TestImap.java @@ -48,6 +48,11 @@ public class TestImap extends AbstractImapTestCase { assertEquals(". OK [READ-WRITE] SELECT completed", readFullAnswer(".")); } + public void testSelectRoot() throws IOException { + writeLine(". SELECT \"\""); + assertEquals(". OK [READ-WRITE] SELECT completed", readFullAnswer(".")); + } + public void testFetchFlags() throws IOException { writeLine(". UID FETCH 1:* (FLAGS)"); assertEquals(". OK UID FETCH completed", readFullAnswer(".")); @@ -332,4 +337,18 @@ public class TestImap extends AbstractImapTestCase { clientSocket.close(); Thread.sleep(5000); } + + public void testSearchCharset() throws IOException { + testSelectInbox(); + writeLine("UID SEARCH CHARSET UTF-8 (HEADER SUBJECT testé)"); + assertEquals(". OK SEARCH completed", readFullAnswer(".")); + } + + public void testWanderLust() throws IOException { + testSelectInbox(); + writeLine(". uid fetch 1:* (body.peek[header.fields (Subject From To Cc Date Message-Id References In-Reply-To Delivered-To)] rfc822.size flags)"); + assertEquals(". OK UID FETCH completed", readFullAnswer(".")); + } + + }