JavaMail连接Office 365使用XOAUTH2身份认证

这篇具有很好参考价值的文章主要介绍了JavaMail连接Office 365使用XOAUTH2身份认证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、微软关闭“基本身份认证”对使用smtp、imap、pop收发邮件的影响

JavaMail连接Office 365使用XOAUTH2身份认证


通过上述文档可以明确:

  1. 本次微软关闭“基本身份认证”,只影响IMAP、POP收件,不影响SMTP发件。
  2. IMAP、POP原本通过“基本身份认证”,现在要使用“OAuth2.0 身份认证”。
二、javamail对OAuth2支持的官方描述:

https://javaee.github.io/javamail/OAuth2

JavaMail连接Office 365使用XOAUTH2身份认证

可见javamail不支持POP传输OAuth2令牌,故只能使用IMAP协议进行收件
JavaMail 1.5.5 and later
:::tips
Properties props = new Properties();
props.put(“mail.imap.ssl.enable”, “true”); // required for Gmail
props.put(“mail.imap.auth.mechanisms”, “XOAUTH2”);
Session session = Session.getInstance(props);
Store store = session.getStore(“imap”);
store.connect(“imap.gmail.com”, username, oauth2_access_token);
:::
JavaMail 1.5.2 and later
:::tips
Properties props = new Properties();
props.put(“mail.imap.ssl.enable”, “true”); // required for Gmail
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”);
Session session = Session.getInstance(props);
Store store = session.getStore(“imap”);
store.connect(“imap.gmail.com”, username, oauth2_access_token);
:::

三、OAuth2的授权模式

由于授权代码流方式,需要弹出一个授权页面让用户授权,然后需要提过一个重定向的接口接收授权码。我们系统不方便进行这种处理。客户端凭据授予流据了解,不能用于发送邮件,只可用于收件(Microsoft的outlook.office365.com邮箱,但我们系统基于smtp协议进行发件,所以发件不在此次影响范围内,无需处理,所以使用客户端模式。

四、修改收件接口使用OAuth2认证

关键代码说明

  1. 判断是否使用imap协议从outlook.office365.com邮件服务器拉取邮件,并获取token

JavaMail连接Office 365使用XOAUTH2身份认证

  1. 如果是,则设置相关session参数,并传递token,否则就使用密码。

JavaMail连接Office 365使用XOAUTH2身份认证

JavaMail连接Office 365使用XOAUTH2身份认证文章来源地址https://www.toymoban.com/news/detail-442067.html

  1. 获取token
private String getOauthTokenBase64() {
  String tenant_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
  String client_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
  String client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
  String scope = "https://outlook.office365.com/.default";

  String url = "https://login.microsoftonline.com/" + tenant_id + "/oauth2/v2.0/token";
  HttpClient httpClient = new HttpClient();
  PostMethod postMethod = new PostMethod(url);
  postMethod.addRequestHeader("accept", "*/*");
  postMethod.addRequestHeader("connection", "Keep-Alive");
  postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=GBK");
  //必须设置下面这个Header
  postMethod.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
  //添加请求参数
  postMethod.addParameter("grant_type", "client_credentials");
  postMethod.addParameter("client_id", client_id);
  postMethod.addParameter("client_secret", client_secret);
  postMethod.addParameter("scope", scope);
  String tooooken = "";
  try {
    int code = httpClient.executeMethod(postMethod);
    String resBody = postMethod.getResponseBodyAsString();
    if (code == 200) {
      Map<String, String> map = JSON.parseObject(resBody, Map.class);
      tooooken = map.get("access_token");
    } else {
      logger.writeLog(String.format("### O365Email 请求结果 code:%s  responseBody:%s", code, resBody));
    }
  } catch (IOException e) {
    logger.writeLog(e.getMessage());
    e.printStackTrace();
  } finally {
    postMethod.releaseConnection();
  }
  logger.writeLog(String.format("### 成功获取到 token:%s", token));
  return tooooken;
}
五、参考资料
  1. javamail教程
  2. javamail官方文档
  3. javamail官方对OAuth2.0 的支持文档
  4. 弃用 Exchange Online 中的基本身份验证
  5. 使用 OAuth 对 IMAP、POP 或 SMTP 连接进行身份验证
  6. 使用现代身份验证(OAuth)来连接POP、IMAP或SMTP
  7. 使用新协议发送邮件

到了这里,关于JavaMail连接Office 365使用XOAUTH2身份认证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Office Tool Plus+KMS部署Office365和Visio等工具

    在Office Tool Plus官网下载Office Tool Plus软件,可以选择包含框架的版本: 解压后打开: 如果电脑上还存在其他版本的Office或者之前卸载不完全,可以使用工具箱中的移除工具进行清理(注意自己笔记本附赠的Office是否注册,未注册卸载本教程不负责任): 卸载完成后选择自己

    2023年04月19日
    浏览(52)
  • Office365 Excel中使用宏将汉字转拼音

    文件 - 选项 - 信任中心 - 信任中心设值 - 宏设值 启用VBA宏 启用VBA宏时启用Excel 4.0宏 信任对VBA工程对象模型的访问 视图 - 查看宏 填写名字创建宏:getpy 填入下面代码 保存,点击否,另存类型为“excel启用宏的工作簿”,然后再保存 使用方式 =getpy(要转换拼音的单元格编号)

    2024年02月10日
    浏览(38)
  • Copilot for Microsoft 365 office手把手使用指南

    本文介绍Microsoft365商业版+copilot应用的使用说明。本文的相关说明基于Microsoft365商业版软件和网页,只有尊贵的商业版用户才能够完全享有,而个人版/家庭版copilot Pro(名字带着Pro的阉割版,恐怕只有MS敢这么玩)无法使用某些功能。 一、Copilot in Word使用指南 在Word中使用co

    2024年03月12日
    浏览(65)
  • 手把手教你如何正确永久使用Microsoft Office365?

    office2019和office 365有什么区别的呢?为什么越来越多的人更加钟爱office365。简单来说office 2019的零售版本属于一次售出永久使用,价格上比较贵,而且功能上也不会再有更新。而office 365是一种基于云的订阅服务,我们花钱买的是一定时期的服务,在使用期间我们可以获得offi

    2024年02月07日
    浏览(54)
  • Microsoft365软件下载使用步骤及office账号能用几台电脑?

    Microsoft 365账号能用几台电脑?个人版账号可同时登入5台设备,家庭版账号每人可同时登入5台设备。Microsoft 365步骤,可通过点击按钮,登陆账号后输入产品来,本文将具体演示。 一、Microsoft 365账号能用几台电脑 Microsoft 365账号在的情况下,可将其权益共享给多台设备(包括

    2024年02月16日
    浏览(42)
  • office365在win7上使用订阅+win7在线升级win10就用它(亲测有效)

    前言: 作为office365的重度使用用户,最近两天订阅到期,续订之后一直显示无法验证此订阅(仅查看),office365未经授权,大多数功能已停用,狂晕!!! 在微软官网上获知2020年1月14日起已不再提供office365对Windows7计算机的支持. 好吧,官方下载win10工具准备升级,下载地址

    2024年02月06日
    浏览(50)
  • Microsoft365产品年卡 office365购买 Microsoft365家庭版15个月密钥 30个月序列号 Microsoft365激活密钥免费 15个月office限量抢购

    office应该是很多人的装机必备软件,办公学习都离不开它。新版的Microsoft 365 除了包含基本的Word、Excel、PowerPoint等软件,几乎把常用的办公软件一网打尽。 Microsoft 365可帮助您工作、学习、组织、连接和创造,只需一项方便的订阅,即可尽享具有 Microsft 365 的6款精品应用、每

    2024年04月27日
    浏览(38)
  • Office 365,真香!

    微软的office可谓是功能强大的办公软件 最新版是office365订阅服务 有哪些好处呢? 下面小编来给大家讲述一下 office365可以获得微软售后的全方位支持 这是盗版无论如何都无法做到的 如果你需要购买正版Office的话 可以随时联系我们 会有专门的工程师协助你解决问题 一个微软

    2024年02月09日
    浏览(34)
  • Office 365基础功能介绍

    目录 Office 365基础功能介绍 邮箱 日历 OneDrive SharePoint Teams Office

    2024年02月11日
    浏览(39)
  • 免费获得Office365

    Office365开发版E5是为开发人员提供的,是微软的官方活动,申请Office 365开发者计划可以获得为期3个月的免费Office365 E5。而E5计划就包含了25个用于所有Office 365 应用的许可证。 Microsoft 365开发者人员中心 2、登录账号 3、注册365开发人员,国家填China,公司随便填,然后接受条款

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包