Java Mail: закрытие родительской папки также закрывает дочерние папки? - PullRequest
0 голосов
/ 22 января 2020

У меня есть многопоточное приложение, в котором несколько почтовых ящиков IMAP считываются одновременно. Каждый поток открывает настроенную папку, например, INBOX, читает все непрочитанные письма, а затем закрывает / удаляет папку.

private void readMail(ImapMailbox mailbox) throws Exception {
        Properties props = new Properties();
        props.put("mail.debug", mailbox.isDebug());
        props.put("mail.imap.connectiontimeout", connectionTimeout);
        props.put("mail.imap.timeout", timeout);

        Session session = Session.getDefaultInstance(props);
        Store store = session.getStore(new URLName(imapUrl(mailbox)));
        Folder folder = null;
        try {
            store.connect();
            folder = store.getFolder(mailbox.getFolder());
            folder.open(Folder.READ_WRITE);
            for (Message message : folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false))) {
                if (message == null) {
                    logger.warn("Mail message is null for mailbox {}!!", mailbox.getEmail());
                    continue;
                }

                try {
                    sender.sendEmailToQueue(mailbox, message);
                    message.setFlag(Flags.Flag.DELETED, true);
                } catch (Throwable ex) {
                    logger.error("Failed to add email to queue", ex);
                }
            }
        } finally {
            if (folder != null && folder.isOpen()) {
                try {
                    folder.close(true);
                } catch (Exception ex) {
                    logger.warn("Problem closing folder {}", folder.getFullName(), ex);
                }
            }
            if (store != null && store.isConnected()) {
                try {
                    store.close();
                } catch (Exception ex) {
                    logger.warn("Problem closing store", ex);
                }
            }
        }
    }

Если один почтовый ящик настроен для чтения из INBOX, а другой - для чтения из подпапки INBOX, например INBOX / customFolder и родительская папка закрыта. Это также закрывает подпапку?

Также кто-нибудь может объяснить, почему я получаю нулевые сообщения в l oop? Иногда я вижу это напечатанным в журналах: logger.warn («Почтовое сообщение для почтового ящика пустое {} !!», mailbox.getEmail ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...