Как получить последние непрочитанные сообщения (которые находятся в папке «Входящие» до открытия папки). Я хочу прочитать их, когда папка будет открыта - PullRequest
0 голосов
/ 05 июня 2019

Я просто пытаюсь прочитать непрочитанные письма из Gmail, используя IMAP.Поэтому, когда я запускаю, мое приложение может читать все непрочитанные письма.Хотя эти электронные письма уже были доступны в INBOX еще до того, как я запустил свое приложение.Вот проблема, скажем, у меня есть 120 электронных писем, мое приложение начало их читать, и оно уже прочитало одно из них, и число их сократилось до 119, а затем, если предположить, что мое электронное письмо получило другое письмо, тогда моя служба начала обрабатывать это, а остальные 119 писем будутбыть непрочитанным, и мое приложение не обрабатывает их

Я пытался использовать DefaultSearchTermStrategy, который поступил из Spring

    EmailReadTaskRunner<SampleMailMessage> emailTaskRunner = new 
    EmailReadTaskRunner<SampleMailMessage>();
        for (MailConfig mailConfig : yamlConfig.getMailConfig()) {
            if (mailConfig.isImapEnabled()) {
                Properties properties = this.getImapProperties();
                properties.put("mail.debug", 
                    String.valueOf(mailConfig.isDebugEnabled()));
                ImapMailReceiver receiver = new 
                ImapMailReceiver(mailConfig.getImageStoreUri() + 
                    "/INBOX");
                receiver.setShouldMarkMessagesAsRead(true);
                receiver.setShouldDeleteMessages(false);
                receiver.setJavaMailProperties(properties);
                receiver.setJavaMailAuthenticator(
                new MailAuthenticator(mailConfig.getUser(), 
                    mailConfig.getPassword()));
                StandardIntegrationFlow flow = IntegrationFlows             
.from(Mail.imapIdleAdapter(receiver).shouldReconnectAutomatically(true)).handle(message -> {
            emailTaskRunner.read(emailReadTask, message, mailConfig);
                    }).get();
                this.getFlowContext().registration(flow).register();
    }
}

Я хочу прочитать все непрочитанные электронные письма, которые могут быть недавними или старыми,Использую версию SpringIntegration 5.0.3, а также использую протокол IMAP, как я уже упоминал в коде.Я также хочу знать, почему это показывает такое поведение.Пока новое письмо не приходит в Gmail, оно может читать их все, всякий раз, когда новое письмо приходит в Gmail, оно начинает читать новое и игнорировать предыдущее непрочитанное письмо

...