如何修复javax.mail.AuthenticationFailedException无效的凭证

时间:2019-06-10 10:36:27

标签: java

尽管我使用了正确的凭据,但无法使用Java读取电子邮件

我尝试过pop3和IMAP。对于所有已尝试的EmailId,所有人都显示无效的凭据

Session session = Session.getDefaultInstance(new Properties( ));
Store store = session.getStore("imaps");
store.connect("imap.googlemail.com", 993, "example@gmail.com", password);
Folder inbox = store.getFolder( "INBOX" );
inbox.open( Folder.READ_ONLY );

// Fetch unseen messages from inbox folder
Message[] messages = inbox.search(
    new FlagTerm(new Flags(Flags.Flag.SEEN), false));

// Sort messages from recent to oldest
Arrays.sort( messages, ( m1, m2 ) -> {
  try {
    return m2.getSentDate().compareTo( m1.getSentDate() );
  } catch ( MessagingException e ) {
    throw new RuntimeException( e );
  }
} );

for ( Message message : messages ) {
  System.out.println( 
      "sendDate: " + message.getSentDate()
      + " subject:" + message.getSubject() );
}

我应该能够阅读电子邮件

1 个答案:

答案 0 :(得分:1)

原因是电子邮件框不允许来自不太安全的应用的连接。 您的代码很好。

Exception in thread "main" javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credentials (Failure)
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:474)
    at javax.mail.Service.connect(Service.java:275)

关闭安全性较低的应用程序访问权限时,将引发上述异常。将此设置为“开”以通过程序进行访问。

enter image description here