javax.mail.MessagingException:A3 BAD 用户已通过身份验证但未连接

Yog*_*ade 7 exchange-server jakarta-mail office365

我正在尝试使用 IMAP 协议从交换服务器读取邮件。我已经实现了代码。但是执行代码时出现以下异常。此异常偶尔发生,我不明白发生这种情况的原因。

javax.mail.MessagingException:A3 BAD 用户已通过身份验证但未连接。;嵌套异常是: com.sun.mail.iap.BadCommandException:A3 BAD 用户已通过身份验证但未连接。在com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:958)在agent.client.attributeGroups.SendReceive.readMailAndReply(SendReceive.java:115)在agent.client.attributeGroups.MailQueue.calculateTime(MailQueue.java) :45)在agent.client.MainClass $ 1.run(MainClass.java:72)在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471)在java.util.concurrent.FutureTask.runAndReset(FutureTask) .java:304) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在 java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)

代码:

Properties props = new Properties();
            props.put("mail.imap.auth", "true");
            props.put("mail.imap.ssl.enable", "true");
            props.put("mail.imap.host", "outlook.office365.com");
            props.put("mail.imap.port", "993");
            props.put("mail.transport.protocol", "imap");  
            props.put("mail.imap.auth.plain.disable", true);
            props.put("mail.imap.auth.ntlm.disable", true);
            props.put("mail.imap.auth.gssapi.disable", true);

          //Get session object by passing credentials.
            Session session = Session.getDefaultInstance(props, 
                    new javax.mail.Authenticator(){
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(
                                    mailId, mailPass);}});

         //Creating IMAP store and connecting it to Mailbox using credentials.   
         store = session.getStore("imap");
         store.connect(mailId, mailPass);

             //Getting mailbox mails.
             inbox = store.getFolder("INBOX");
             inbox.open(Folder.READ_WRITE); 
             int totalMailCount = inbox.getMessageCount();

             //Reading all mails to Message array.
             Message[] messages = inbox.getMessages(1, totalMailCount);
             for (Message mail : messages) 
             {  
                    Address[] fromAddresses = mail.getFrom();                      
                    String mailFrom = fromAddresses[0].toString();
                    String mailSubject = mail.getSubject();
                System.out.println(mailFrom);
                    System.out.println(mailSubject);
                    mail.setFlag(Flags.Flag.DELETED,true);

                   }                       
                }

             }
Run Code Online (Sandbox Code Playgroud)

请向我提出解决此异常的建议。

小智 5

我的问题是因为我使用一个过程将电子邮件从收件箱移动到另一个不同的文件夹。我批量执行此操作,因为移动大量电子邮件会引发超时异常,因此我尝试移动少量电子邮件并避免超时异常,但开始收到 BadCommandException:A2 BAD 用户已通过身份验证但未连接异常。所以我寻找对我有用的金额。我根据这篇文章得到了这个想法 https://github.com/mscdex/node-imap/issues/689

  1. 这是微软关闭闲聊客户端的机制。解决方案是减少登录此帐户的频率。

  2. 这是由于 IMAP 实现中的错误造成的。如果客户端提供有效的用户名但密码无效,服务器将接受登录,但后续命令将失败并显示上述错误消息。

  3. 这是一个共享邮箱,您使用的登录方案不正确。使用 O365 的用户名@域名\SharedMailboxAlias


Bil*_*non -1

这似乎是office365服务器中的一个错误。它告诉你你的密码错误。