【发布时间】:2020-03-19 21:20:00
【问题描述】:
我可以使用 Javamail IMAP 包访问我的 outlook.office365.com 邮箱。我想使用 OAuth2.0 访问同一个邮箱。根据https://javaee.github.io/javamail/OAuth2 的说法,JavaMail 在 1.5.5 之后可以通过使用 Bearer 访问令牌来支持 OAuth2。我创建了一个简单的测试代码:
System.out.println("Helloworld");
String host="outlook.office365.com";
String username="mymailboxname";
//String password="mymailboxpasswd";
String accesstoken="eyJ0eXAiOiJKV1QiLCJub25jZSI6Im4....my token from Micorsoft .....S0QoWgvodHXw";
Properties props=new Properties();
props.setProperty("mail.imap.ssl.enable","true");
props.setProperty("mail.imap.auth.mechanisms","XOAUTH2"); //added for oauth2
// set any other needed mail.imap.* properties here
Session session=Session.getInstance(props);
Store store=session.getStore("imap");
// store.connect(host,993,username,password);
store.connect(host,993,username,accesstoken);
当我运行它时,我得到了 AuthenticationFailedException
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)
at Main.main(Main.java:21)
使用OAuth2通过IMAP连接outlook.office365.com的方式是什么
【问题讨论】:
-
没错。删除带有密码的连接调用,只需使用带有令牌的连接调用。
-
该行应该被删除。它的存在是为了确保基本身份验证有效。
标签: oauth-2.0 outlook jakarta-mail imap