我无法连接到 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();
} }
}
我想连接到我的微软账户 我尝试了一些建议的解决方案,但它们确实有效。