AUTHENTICATE 失败。 IMAP 商店未连接

问题描述 投票:0回答:0

我无法连接到 IMAP 商店。我有这个错误。我想在我的 talend 项目中实施 oauth2

Exception in thread "main" javax.mail.AuthenticationFailedException: AUTHENTICATE failed.
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:732)
    at javax.mail.Service.connect(Service.java:366)

代码:

import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.search.FlagTerm; import com.sun.mail.imap.IMAPStore; 
public class Email {
    public static void main(String[] args) throws Exception {
        final String username = "my_username";
        final String password = "my_password";
        final String clientId = "my_client_id";
        final String clientSecret = "my_client_secret";
        final String imapHost = "outlook.office365.com";
        final String imapPort = "993";         
        Properties props = new Properties();
        props.put("mail.imap.ssl.enable", "true");
        props.put("mail.imap.sasl.enable", "true");
        props.put("mail.imap.sasl.mechanisms", "XOAUTH2");
        props.put("mail.imap.auth.login.disable", "true");
        props.put("mail.imap.auth.plain.disable", "true");
        props.put("mail.imap.ssl.trust", imapHost);
        props.put("mail.imap.sasl.mechanisms.oauth2.clientId",clientId);
        props.put("mail.imap.sasl.mechanisms.oauth2.clientSecret", clientSecret);         
Session session = Session.getInstance(props);
        IMAPStore store = (IMAPStore) session.getStore("imap");
        store.connect(imapHost, Integer.parseInt(imapPort), username, password);         
Folder inbox = store.getFolder("inbox");
        inbox.open(Folder.READ_ONLY);         
Flags seen = new Flags(Flags.Flag.SEEN);
        FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
        Message[] messages = inbox.search(unseenFlagTerm);         
for (Message message :messages){
            System.out.println("Subject: " + message.getSubject());
            System.out.println("From: " + message.getFrom()[0]);
            System.out.println("Sent Date: " + message.getSentDate());
            System.out.println();
        }     }
}

我想连接到我的微软账户 我尝试了一些建议的解决方案,但它们确实有效。

java oauth-2.0 talend
© www.soinside.com 2019 - 2024. All rights reserved.