diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index 5c27a7b8..5bf02e5a 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1463,6 +1463,13 @@ public abstract class ExchangeSession { */ public abstract void copyMessage(Message message, String targetFolder) throws IOException; + public void copyMessages(List messages, String targetFolder) throws IOException { + for (Message message: messages) { + copyMessage(message, targetFolder); + } + } + + /** * Move message to target folder * @@ -1472,6 +1479,12 @@ public abstract class ExchangeSession { */ public abstract void moveMessage(Message message, String targetFolder) throws IOException; + public void moveMessages(List messages, String targetFolder) throws IOException { + for (Message message: messages) { + moveMessage(message, targetFolder); + } + } + /** * Move folder to target name. * diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 743d80c8..89503350 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -343,14 +343,14 @@ public class ImapConnection extends AbstractConnection { if (!uidRangeIterator.hasNext()) { sendClient(commandId + " NO " + "No message found"); } else { + ArrayList messages = new ArrayList(); while (uidRangeIterator.hasNext()) { - DavGatewayTray.switchIcon(); - ExchangeSession.Message message = uidRangeIterator.next(); - if ("copy".equalsIgnoreCase(subcommand)) { - session.copyMessage(message, targetName); - } else { - session.moveMessage(message, targetName); - } + messages.add(uidRangeIterator.next()); + } + if ("copy".equalsIgnoreCase(subcommand)) { + session.copyMessages(messages, targetName); + } else { + session.moveMessages(messages, targetName); } sendClient(commandId + " OK " + subcommand + " completed"); }