【问题标题】:How to connect to outlook.office365.com with IMAP by using OAuth2如何使用 OAuth2 通过 IMAP 连接到 outlook.office365.com
【发布时间】: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


【解决方案1】:

Found on here

注意

如果您在组织中启用了安全默认设置,则在 Exchange Online 中会自动禁用 POP3 和 IMAP4。有关详细信息,请参阅什么是安全默认值?。

为了保护您的 Exchange Online 租户免受暴力破解或密码喷射攻击,您的组织需要在 Exchange Online 中禁用基本身份验证,并且仅在 Exchange Online 中使用新式身份验证。禁用基本身份验证将阻止旧协议,例如 POP 和 IMAP。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
相关资源
最近更新 更多