首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sping集成邮件空闲接收器中的问题

Sping集成邮件空闲接收器中的问题
EN

Stack Overflow用户
提问于 2020-04-22 15:28:07
回答 1查看 215关注 0票数 1

我使用spring integration mail来接收来自多个可配置帐户的邮件消息。

我正在使用IMAP服务器和idle配置

我写了以下代码:

代码语言:javascript
复制
@Autowired
private IntegrationFlowContext flowContext;
IntegrationFlow flow = null;
String userFlag = confMailIn.getHost() + "_idle_adapter";
ImapIdleChannelAdapterSpec imapIdleChannelAdapterSpec = Mail.imapIdleAdapter(connectionUrl.toString())
        .javaMailProperties(javaMailProperties)
        .shouldDeleteMessages(deleteMessages)
        .shouldMarkMessagesAsRead(markMessagesRead)
        .autoStartup(true)
        .autoCloseFolder(false)
        .userFlag(userFlag)
        .id(userFlag)
        //.searchTermStrategy(this::notSeenTerm)
        .selector(selectFunction);

if (confMailIn.isRichiedeAutenticazione()) {
    imapIdleChannelAdapterSpec = imapIdleChannelAdapterSpec.javaMailAuthenticator(new CasellaPostaleAuthenticator(cpd.getIndirizzoMail(), cpd.getUsername(), cpd.getPassword()));
}
flow = IntegrationFlows
        .from(imapIdleChannelAdapterSpec)
        .handle(message ->{
            //Prendo il closable del messaggio e valorizzo i l'elenco di closeale da chiudere
            Closeable closeable = StaticMessageHeaderAccessor.getCloseableResource(message);
            if( !closeables.containsKey(cpd.getIndirizzoMail()) ) {
                closeables.put(cpd.getIndirizzoMail(), closeable);
            }
            publishMailEvent(message);
        })
        .get();
flowContext.registration(flow).id(flowId).register();

我将自动关闭文件夹设置为假,因为如果这是真的,我将无法处理邮件消息,因为我收到了一个FolderClosedException。因此,我收集了所有的Closeable对象,并在关闭Spring context时关闭它们(在最好的情况下...从不:)

到目前为止一切顺利..。我注册了流,它就开始工作了。但我注意到,在一段时间后,它停止了接收邮件消息。我需要重新启动我的服务,它再次工作了一段时间。

当它工作时,我会看到这些日志:

代码语言:javascript
复制
2020-04-20 16:32:57,427 25199841 [scheduling-1] DEBUG o.s.i.mail.ImapIdleChannelAdapter - waiting for mail 
2020-04-20 16:32:57,460 25199874 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-04-20 16:32:57,460 25199874 [scheduling-1] DEBUG o.s.i.mail.ImapMailReceiver - This email server does not support RECENT flag, but it does support USER flags which will be used to prevent duplicates during email fetch. This receiver instance uses flag: imapmail.libero.it_idle_adapter 
2020-04-20 16:32:57,476 25199890 [scheduling-1] DEBUG o.s.i.mail.ImapMailReceiver - found 0 new messages 
2020-04-20 16:32:57,476 25199890 [scheduling-1] DEBUG o.s.i.mail.ImapMailReceiver - Received 0 messages 
2020-04-20 16:32:57,476 25199890 [scheduling-1] DEBUG o.s.i.mail.ImapIdleChannelAdapter - received 0 mail messages 
2020-04-20 16:32:57,476 25199890 [scheduling-1] DEBUG o.s.i.mail.ImapIdleChannelAdapter - Task completed successfully. Re-scheduling it again right away.

但过了一段时间,它就停止了写作。我有一种感觉,它与Flag选项有关,但我不知道如何解决这个问题。

任何建议都非常受欢迎

谢谢

安吉洛

EN

回答 1

Stack Overflow用户

发布于 2020-04-23 01:27:27

请在这里提出一个GH问题,https://github.com/spring-projects/spring-integration/issues

作为一种变通方法,您可能需要遵循文档中建议的方法:https://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/mail.html#mail-tx-sync。参见Mover。我的意思是,您需要考虑重新打开文件夹,以便能够处理邮件中的附件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61359499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档