发现 javax.mail.AuthenticationFailedException:连接失败,未指定密码?在收听密码正确的新邮件时

Found javax.mail.AuthenticationFailedException: failed to connect, no password specified? while listenning new mails where the password is correct

我在使用 spring 集成连接 imap gmail 存储时遇到此异常。请看一下代码 {@自动连线 私人 IntegrationFlowContext flowContext;

    public void startMail(String user, String pw) {
        IntegrationFlow flow = IntegrationFlows
                .from(Mail.imapIdleAdapter(imapUrl(user, pw))
                        .javaMailProperties(p -> p.put("mail.debug", "true"))
                        //.userFlag("testSIUserFlag") // needed by the SI test server - not needed if server supports /SEEN
                        .headerMapper(new DefaultMailHeaderMapper()))
                .handle(System.out::println)
                .get();
        this.flowContext.registration(flow).register();
    }}

where imapUrl(user, pw) returns the url as imap://xyz.abc@gmail.com:xxxxx@imap.gmail.com: 993/收件箱

请帮我摆脱这个异常。

注意:我读到 post here 之一说需要在凭据中转义“@”。作为 java spring 引导的新手,请告诉我如何转义 '@'

默认情况下,GMail 不支持 JavaMail 客户端;你必须启用 "less secure clients"(或类似的东西)。

%40代替@.

https://www.werockyourweb.com/url-escape-characters/

谢谢阿尔乔姆!有效。实际上当它是一个@gmail.com。在 IMAP URL 中不需要此后缀 - 只需您的帐户。例如我的连接时是这样的:

imaps://clericsmail:[APP_PASSWORD]@imap.gmail.com/INBOX

其中 APP_PASSWORD 我无法向您展示,因为那是我根据那些 GMail 建议配置的。