diff --git a/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java b/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java index a20a2a1..7e13f66 100644 --- a/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java +++ b/network/src/main/java/de/muehlencord/shared/network/mail/DefaultMailReader.java @@ -307,6 +307,43 @@ public abstract class DefaultMailReader implements MailReader { return returnValue; } + + /** + * retrieves the list of messages stored in the given folder + * + * @param sourceFolder the folder to search return the emails for + * @param start the number of the first message + * @param end the number of the last message + * @return list of messages stored in the given folder + * + * @throws MailReaderException if the message list cannot be retrieved + * + */ + @Override + public List getMessages(String sourceFolder, int start, int end) throws MailReaderException { + List returnValue = new LinkedList<>(); + Folder folder = getFolderObject(sourceFolder); + try { + folder.open(Folder.READ_ONLY); + Message[] messages = folder.getMessages(start, end); + for (Message msg : messages) { + returnValue.add(MailMessageUtils.getInstance(getValidMessage(msg))); + } + } catch (Exception ex) { + throw new MailReaderException("Cannot fetch email from folder " + folder.getFullName() + ". Reason: " + ex.getMessage(), ex); + + } finally { + if ((folder != null) && (folder.isOpen())) { + try { + folder.close(false); + } catch (MessagingException ex) { + LOGGER.debug(StringUtil.getStackTraceString(ex)); + } + } + } + + return returnValue; + } /** * copies the given message from the source folder to the destination folder diff --git a/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java b/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java index a22416d..ca7a38d 100644 --- a/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java +++ b/network/src/main/java/de/muehlencord/shared/network/mail/MailReader.java @@ -70,6 +70,17 @@ public interface MailReader { * */ List getMessages(String folder) throws MailReaderException; + + /** + * retrieves the list of messages stored in the given folder + * + * @param folder the folder to search return the emails for + * @return list of messages stored in the given folder + * + * @throws MailReaderException if the message list cannot be retrieved + * + */ + List getMessages(String folder, int start, int end) throws MailReaderException; /** * copies the given message from the source folder to the destination folder