Исключение «Папка в режиме только для чтения» - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь запустить пример Mail imapInboundAdapter:

@Bean
public IntegrationFlow mailListener() {
    return IntegrationFlows.from(Mail.imapInboundAdapter(
            "imaps://myemailt%40mail.ru:mypassword@imap.mail.ru:993/inbox"
            )
                    .javaMailProperties(p -> {
                        p.put("mail.debug", "false");
                        p.put("mail.auth", "true");
                        p.put("mail.imaps.ssl.trust", "*");
                    })
                    .get(),
            e -> e.poller(Pollers.fixedRate(5000).maxMessagesPerPoll(1)))
            .<Message>handle((payload, header) -> payload)
            .log()
            .get();
}

и получаю следующее исключение:

2020-01-06 19:12:44.584  INFO 5388 --- [   scheduling-1] o.s.integration.mail.ImapMailReceiver    : attempting to receive mail from folder [INBOX]    
2020-01-06 19:12:44.985 ERROR 5388 --- [   scheduling-1] o.s.integration.handler.LoggingHandler   : org.springframework.messaging.MessagingException: failure occurred while polling for mail; nested exception is javax.mail.MessagingException: A7 NO [CLIENTBUG] Folder in read-only mode;
      nested exception is:
        com.sun.mail.iap.CommandFailedException: A7 NO [CLIENTBUG] Folder in read-only mode
        at org.springframework.integration.mail.MailReceivingMessageSource.doReceive(MailReceivingMessageSource.java:74)
        at org.springframework.integration.endpoint.AbstractMessageSource.receive(AbstractMessageSource.java:167)
        at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:250)
        at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:359)
        at org.springframework.integration.endpoint.AbstractPollingEndpoint.pollForMessage(AbstractPollingEndpoint.java:328)
        at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$null$1(AbstractPollingEndpoint.java:275)
        at org.springframework.integration.util.ErrorHandlingTaskExecutor.lambda$execute$0(ErrorHandlingTaskExecutor.java:57)
        at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
        at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:55)
        at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$createPoller$2(AbstractPollingEndpoint.java:272)
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
        at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: javax.mail.MessagingException: A7 NO [CLIENTBUG] Folder in read-only mode;
      nested exception is:
        com.sun.mail.iap.CommandFailedException: A7 NO [CLIENTBUG] Folder in read-only mode
        at com.sun.mail.imap.IMAPMessage.setFlags(IMAPMessage.java:921)
        at javax.mail.Message.setFlag(Message.java:578)
        at org.springframework.integration.mail.AbstractMailReceiver.setMessageFlags(AbstractMailReceiver.java:538)
        at org.springframework.integration.mail.AbstractMailReceiver.postProcessFilteredMessages(AbstractMailReceiver.java:502)
        at org.springframework.integration.mail.AbstractMailReceiver.searchAndFilterMessages(AbstractMailReceiver.java:426)
        at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:378)
        at org.springframework.integration.mail.MailReceivingMessageSource.doReceive(MailReceivingMessageSource.java:60)
        ... 17 more
    Caused by: com.sun.mail.iap.CommandFailedException: A7 NO [CLIENTBUG] Folder in read-only mode
        at com.sun.mail.iap.Protocol.handleResult(Protocol.java:351)
        at com.sun.mail.imap.protocol.IMAPProtocol.storeFlags(IMAPProtocol.java:1603)
        at com.sun.mail.imap.protocol.IMAPProtocol.storeFlags(IMAPProtocol.java:1588)
        at com.sun.mail.imap.IMAPMessage.setFlags(IMAPMessage.java:917)
        ... 23 more

В чем может быть причина?

Редактировать 2. Когда электронная почта действительно приходит, теперь я получаю новое исключение NullPointerException:

2020-01-06 21:09:12.515  INFO 996 --- [   scheduling-1] o.s.integration.mail.ImapMailReceiver    : attempting to receive mail from folder [INBOX]
2020-01-06 21:09:17.522  INFO 996 --- [   scheduling-1] o.s.integration.mail.ImapMailReceiver    : attempting to receive mail from folder [INBOX]
2020-01-06 21:09:18.328 ERROR 996 --- [   scheduling-1] o.s.integration.handler.LoggingHandler   : org.springframework.messaging.MessagingException: failure occurred while polling for mail; nested exception is java.lang.NullPointerException
    at org.springframework.integration.mail.MailReceivingMessageSource.doReceive(MailReceivingMessageSource.java:74)
    at org.springframework.integration.endpoint.AbstractMessageSource.receive(AbstractMessageSource.java:167)
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:250)
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:359)
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.pollForMessage(AbstractPollingEndpoint.java:328)
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$null$1(AbstractPollingEndpoint.java:275)
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.lambda$execute$0(ErrorHandlingTaskExecutor.java:57)
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:55)
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$createPoller$2(AbstractPollingEndpoint.java:272)
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NullPointerException
    at javax.mail.internet.MimeUtility.quote(MimeUtility.java:975)
    at javax.mail.internet.ParameterList.quote(ParameterList.java:672)
    at javax.mail.internet.ParameterList.access$200(ParameterList.java:76)
    at javax.mail.internet.ParameterList$ToStringBuffer.addNV(ParameterList.java:640)
    at javax.mail.internet.ParameterList.toString(ParameterList.java:621)
    at javax.mail.internet.ContentType.toString(ContentType.java:221)
    at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:644)
    at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1420)
    at org.springframework.integration.mail.AbstractMailReceiver$IntegrationMimeMessage.<init>(AbstractMailReceiver.java:661)
    at org.springframework.integration.mail.AbstractMailReceiver.postProcessFilteredMessages(AbstractMailReceiver.java:510)
    at org.springframework.integration.mail.AbstractMailReceiver.searchAndFilterMessages(AbstractMailReceiver.java:426)
    at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:378)
    at org.springframework.integration.mail.MailReceivingMessageSource.doReceive(MailReceivingMessageSource.java:60)
    ... 17 more

Зависимости PS Maven:

spring-boot-starter-parent 2.2.2.RELEASE

группа javax.mail артефакт почты версия 1.4.7

1 Ответ

1 голос
/ 06 января 2020

Удалите .get() из адаптера spe c

public IntegrationFlow mailListener() {
    return IntegrationFlows.from(Mail.imapInboundAdapter(
            "imaps://myemailt%40mail.ru:mypassword@imap.mail.ru:993/inbox"
            )
                    .javaMailProperties(p -> {
                        p.put("mail.debug", "false");
                        p.put("mail.auth", "true");
                        p.put("mail.imaps.ssl.trust", "*");
                    }),
            e -> e.poller(Pollers.fixedRate(5000).maxMessagesPerPoll(1)))
            .<Message>handle((payload, header) -> payload)
            .log()
            .get();
}

Использование get() предотвращает инициализацию bean-компонента адаптера (который переключает режим из режима «только чтение» в режим чтения / записи). .

Когда вводится необработанный адаптер spe c, каркас завершит инициализацию.

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