public ReceivedEmail[] receiveEnvelopes() { return receiveEnvelopes(null); }
/** * @param protocol Protocol such as {@link ImapServer#PROTOCOL_IMAP} or {@link Pop3Server#PROTOCOL_POP3}. * @param sessionProperties Session properties to use. * @param authenticator Authenticator which contains necessary authentication for server. * @return {@link ReceiveMailSession}. */ public static ReceiveMailSession createSession(final String protocol, final Properties sessionProperties, final Authenticator authenticator, final File attachmentStorage) { final Session session = Session.getInstance(sessionProperties, authenticator); final Store store; try { store = session.getStore(protocol); } catch (final NoSuchProviderException nspex) { final String errMsg = String.format("Failed to create %s session", protocol); throw new MailException(errMsg, nspex); } return new ReceiveMailSession(session, store, attachmentStorage); }
/** * Opens default folder: DEFAULT_FOLDER. */ public void useDefaultFolder() { closeFolderIfOpened(folder); useFolder(DEFAULT_FOLDER); }
private void useAndOpenFolderIfNotSet() { if (folder == null) { if (folderName != null) { useFolder(folderName); } else { useDefaultFolder(); } } }
/** * Receives the emails as specified by the builder. */ public ReceivedEmail[] get() { if (fromFolder != null) { session.useFolder(fromFolder); } return session.receiveMessages(filter, flagsToSet, flagsToUnset, envelopeOnly, messages -> { if (targetFolder != null) { try { session.folder.copyMessages(messages, session.getFolder(targetFolder)); } catch (MessagingException e) { throw new MailException("Copying messages failed"); } } }); }
/** * Returns the number of unread messages. */ public int getUnreadMessageCount() { useAndOpenFolderIfNotSet(); try { return folder.getUnreadMessageCount(); } catch (final MessagingException msgexc) { throw new MailException(msgexc); } }
/** * Receives all emails. Messages are not modified. However, servers * may set SEEN flag anyway, so we force messages to remain * unseen. * * @return array of {@link ReceivedEmail}s. */ public ReceivedEmail[] receiveEmail() { return receiveMessages(null, null, null, false, null); }
/** * Opens new folder and closes previously opened folder. * * @param folderName Folder to open */ public void useFolder(final String folderName) { closeFolderIfOpened(folder); try { this.folderName = folderName; this.folder = getService().getFolder(folderName); try { folder.open(Folder.READ_WRITE); } catch (final MailException ignore) { folder.open(Folder.READ_ONLY); } } catch (final MessagingException msgexc) { throw new MailException("Failed to connect to folder: " + folderName, msgexc); } }
/** * Just returns a folder, w/o opening. */ public Folder getFolder(final String folder) { try { return getService().getFolder(folder); } catch (MessagingException e) { throw new MailException("Folder not found: " + folder, e); } }
/** * Receives all emails and mark all messages as 'seen' (ie 'read'). * * @return array of {@link ReceivedEmail}s. * @see #receiveEmailAndMarkSeen(EmailFilter) */ public ReceivedEmail[] receiveEmailAndMarkSeen() { return receiveEmailAndMarkSeen(null); }
/** * Receives all emails and mark all messages as 'seen' and 'deleted'. * * @return array of {@link ReceivedEmail}s. */ public ReceivedEmail[] receiveEmailAndDelete() { return receiveEmailAndDelete(null); }
@Override public void close() { closeFolderIfOpened(folder); folder = null; folderName = null; super.close(); }
/** * Receives the emails as specified by the builder. */ public ReceivedEmail[] get() { if (fromFolder != null) { session.useFolder(fromFolder); } return session.receiveMessages(filter, flagsToSet, flagsToUnset, envelopeOnly, messages -> { if (targetFolder != null) { try { session.folder.copyMessages(messages, session.getFolder(targetFolder)); } catch (MessagingException e) { throw new MailException("Copying messages failed"); } } }); }
/** * Returns number of messages. * * @return The number of messages. */ public int getMessageCount() { useAndOpenFolderIfNotSet(); try { return folder.getMessageCount(); } catch (final MessagingException msgexc) { throw new MailException(msgexc); } }
/** * Receives all emails that matches given {@link EmailFilter}. * Messages are not modified. However, servers may set SEEN flag anyway, * so we force messages to remain unseen. * * @param filter {@link EmailFilter} * @return array of {@link ReceivedEmail}s. */ public ReceivedEmail[] receiveEmail(final EmailFilter filter) { return receiveMessages(filter, null, null, false, null); }
private void useAndOpenFolderIfNotSet() { if (folder == null) { if (folderName != null) { useFolder(folderName); } else { useDefaultFolder(); } } }
/** * Opens new folder and closes previously opened folder. * * @param folderName Folder to open */ public void useFolder(final String folderName) { closeFolderIfOpened(folder); try { this.folderName = folderName; this.folder = getService().getFolder(folderName); try { folder.open(Folder.READ_WRITE); } catch (final MailException ignore) { folder.open(Folder.READ_ONLY); } } catch (final MessagingException msgexc) { throw new MailException("Failed to connect to folder: " + folderName, msgexc); } }
/** * Returns array of all {@link Folder}s as {@code String}s. You can use these names in * {@link #useFolder(String)} method. * * @return array of all {@link Folder}s as {@code String}s. */ public String[] getAllFolders() { final Folder[] folders; try { folders = getService().getDefaultFolder().list("*"); } catch (final MessagingException msgexc) { throw new MailException("Failed to connect to folder", msgexc); } final String[] folderNames = new String[folders.length]; for (int i = 0; i < folders.length; i++) { final Folder folder = folders[i]; folderNames[i] = folder.getFullName(); } return folderNames; }
/** * Receives all emails and mark all messages as 'seen' (ie 'read'). * * @return array of {@link ReceivedEmail}s. * @see #receiveEmailAndMarkSeen(EmailFilter) */ public ReceivedEmail[] receiveEmailAndMarkSeen() { return receiveEmailAndMarkSeen(null); }