Java IMAP电子邮件通道适配器引发异常“;A5错误无效的命令或参数&引用;

Java IMAP电子邮件通道适配器引发异常“;A5错误无效的命令或参数&引用;,java,spring-integration,jakarta-mail,imap,mail-server,Java,Spring Integration,Jakarta Mail,Imap,Mail Server,我在spring integration中使用imap空闲通道适配器接收电子邮件: A5 SEARCH NOT (ANSWERED) NOT (DELETED) NOT (SEEN) NOT (FLAGGED) ALL A5 BAD invalid command or parameters 似乎imap服务器认为上述命令无效,有人能告诉我如何修复吗 我的调试消息: DEBUG: successfully loaded resource: /META-INF/javamail.default.

我在spring integration中使用imap空闲通道适配器接收电子邮件:

A5 SEARCH NOT (ANSWERED) NOT (DELETED) NOT (SEEN) NOT (FLAGGED) ALL
A5 BAD invalid command or parameters
似乎imap服务器认为上述命令无效,有人能告诉我如何修复吗

我的调试消息:

DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle]
DEBUG IMAPS: mail.imap.fetchsize: 16384
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
DEBUG IMAPS: mail.imap.appendbuffersize: -1
DEBUG IMAPS: mail.imap.minidletime: 10
DEBUG IMAPS: closeFoldersOnStoreFailure
DEBUG IMAPS: trying to connect to host "imap.mxhichina.com", port 993, isSSL true
* OK AliYun IMAP Server Ready(10.177.11.50)
A0 CAPABILITY
* CAPABILITY IMAP4rev1 IDLE XLIST UIDPLUS ID SASL-IR AUTH=XOAUTH AUTH=EXTERNAL
A0 OK CAPABILITY completed
DEBUG IMAPS: AUTH: XOAUTH
DEBUG IMAPS: AUTH: EXTERNAL
DEBUG IMAPS: protocolConnect login, host=imap.mxhichina.com, user=*****, password=<non-null>
DEBUG IMAPS: mechanism PLAIN not supported by server
DEBUG IMAPS: mechanism LOGIN not supported by server
DEBUG IMAPS: mechanism NTLM not supported by server
DEBUG IMAPS: mechanism XOAUTH2 disabled by property: mail.imaps.auth.xoauth2.disable
DEBUG IMAPS: LOGIN command trace suppressed
DEBUG IMAPS: LOGIN command result: A1 OK LOGIN completed
A2 CAPABILITY
* CAPABILITY IMAP4rev1 IDLE XLIST UIDPLUS ID SASL-IR AUTH=XOAUTH AUTH=EXTERNAL
A2 OK CAPABILITY completed
DEBUG IMAPS: AUTH: XOAUTH
DEBUG IMAPS: AUTH: EXTERNAL
A3 LIST "" INBOX
* LIST () "/" "INBOX"
A3 OK LIST completed
DEBUG IMAPS: connection available -- size: 1
A4 SELECT INBOX
* 2 EXISTS
* 0 RECENT
* OK [UNSEEN 0]
* OK [UIDNEXT 25] Predicted next UID.
* OK [UIDVALIDITY 2] UIDs valid.
* FLAGS (\Answered \Seen \Deleted \Draft \Flagged)
* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft \Flagged)] Limited.
A4 OK [READ-WRITE] SELECT completed
A5 SEARCH NOT (ANSWERED) NOT (DELETED) NOT (SEEN) NOT (FLAGGED) ALL
A5 BAD invalid command or parameters
13:41:00.557 WARN  [task-scheduler-1][org.springframework.integration.mail.ImapIdleChannelAdapter] error occurred in idle task
javax.mail.MessagingException: A5 BAD invalid command or parameters;
DEBUG:已成功加载资源:/META-INF/javamail.default.address.map
调试:getProvider()返回javax.mail.Provider[STORE,imaps,com.sun.mail.imap.imapssltore,Oracle]
调试IMAPS:mail.imap.fetchsize:16384
调试IMAPS:mail.imap.ignorebodystructuresize:false
调试IMAPS:mail.imap.statuscachetimeout:1000
调试IMAPS:mail.imap.appendbuffersize:-1
调试IMAPS:mail.imap.minidletime:10
调试IMAPS:closeFoldersOnStoreFailure
调试IMAPS:尝试连接到主机“imap.mxhichina.com”,端口993,isSSL true
*OK AliYun IMAP服务器就绪(10.177.11.50)
A0能力
*功能IMAP4rev1 IDLE XLIST UIDPLUS ID SASL-IR AUTH=XOATH AUTH=EXTERNAL
A0正常能力完成
调试IMAPS:AUTH:XOAUTH
调试IMAPS:AUTH:EXTERNAL
调试IMAPS:protocolConnect登录,主机=imap.mxhichina.com,用户=****,密码=
调试IMAPS:服务器不支持普通机制
调试IMAPS:服务器不支持机制登录
调试IMAPS:服务器不支持NTLM机制
调试IMAPS:机制XOAUTH2被属性禁用:mail.IMAPS.auth.XOAUTH2.disable
调试IMAPS:已抑制登录命令跟踪
调试IMAPS:登录命令结果:A1 OK登录已完成
A2能力
*功能IMAP4rev1 IDLE XLIST UIDPLUS ID SASL-IR AUTH=XOATH AUTH=EXTERNAL
A2正常能力完成
调试IMAPS:AUTH:XOAUTH
调试IMAPS:AUTH:EXTERNAL
A3列表“”收件箱
*列表()“/”收件箱
A3确定列表已完成
调试IMAPS:连接可用--大小:1
A4选择收件箱
*2存在
*0最近
*OK[未显示的0]
*确定[UIDNEXT 25]预测下一个UID。
*确定[UID有效性2]UID有效。
*标志(\responsed\Seen\Deleted\Draft\Flagged)
*OK[PERMANENTFLAGS(\Answered\Seen\Deleted\Draft\Flagged)]有限公司。
A4确定[读写]选择完成
A5搜索未(应答)未(删除)未(查看)未(标记)全部
A5错误无效的命令或参数
13:41:00.557警告[task-scheduler-1][org.springframework.integration.mail.ImapIdleChannelAdapter]空闲任务中出现错误
javax.mail.MessaginException:A5错误无效的命令或参数;
我的配置

<int-mail:imap-idle-channel-adapter id="mailAdapter"
                                    store-uri="imaps://${username}:${password}@imap.mxhichina.com/INBOX"
                                    channel="inboundChannel"
                                    auto-startup="true"
                                    should-delete-messages="true"
                                    should-mark-messages-as-read="true"
                                    java-mail-properties="javaMailProperties"/>

    <util:properties id="javaMailProperties">
        <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
        <prop key="mail.imap.socketFactory.fallback">false</prop>
        <prop key="mail.store.protocol">imaps</prop>
        <prop key="mail.transport.protocol">smtps</prop>
        <prop key="mail.smtps.auth">true</prop>
        <prop key="mail.debug">true</prop>
        <prop key="mail.smtp.starttls.enable">true</prop>
    </util:properties>

javax.net.ssl.SSLSocketFactory
假的
imaps
smtps
真的
真的
真的
我的邮件服务器不支持NOT(****)命令,所以下面的命令不起作用

A5 SEARCH NOT (ANSWERED) NOT (DELETED) NOT (SEEN) NOT (FLAGGED) ALL
因此,我将DefaultSearchTermStrategy更改为我自己的一个,名为UnsenseArchTermStrategy

@Component
public class UnseenSearchTermStrategy  implements SearchTermStrategy {
    UnseenSearchTermStrategy(){
        super();
    }
    @Override
    public SearchTerm generateSearchTerm(Flags flags, Folder folder) {
        return new FlagTerm(new Flags(Flags.Flag.SEEN), false);
    }
}
下面的命令将在邮件服务器上执行,并且运行良好

A5 SEARCH UNSEEN ALL
stackoverflow中的相关主题

请在问题中添加更多标签。这看起来不像是Spring集成问题。您的IMAP服务器有一些限制。谢谢,添加标记IMAP和javamailGood。但我仍然认为你应该为你的电子邮件服务器添加标签。这可能根本不是Java客户机的问题。