目录

E5 自动订阅程序[已开源]

Office E5 自动订阅程序

2023-04-07 起网站暂时关闭,停止调用

这两天出现大量 E5 账户被“强制”过期,到期时间被重置为 0/0,避免影响其他账户的到期时间,所以暂时将调用关闭。

可能是滥用的太多了,对使用了本程序的 E5 进行了“强制”过期,还好的是留了 1 个月时间可以转移 OD 里的资源,所以大家尽快备份资源吧。

初步判断是根据以下几个原因锁定的 E5。

  • 根据调用服务器的 IP
  • 根据在 AZ 面板里应用设置的回调地址,也就是 https://e5.qyi.io/xxxxxxxxxxxx

所以还没有被 “过期”的童鞋,在 az 面板 里将应用删除了吧,或者将回调地址删了也行。

历史

2023-01-15 : 官方将回调地址 https://e5.qyi.io/outlook/auth2/receive 设置为黑名单,填写了该地址的应用都将判断为“钓鱼”应用。关于续订程序出现授权出错问题

2023-02-17 : GitHub 将用于登录的 GitHub Apps 暂停,导致无法登录。无任何通知,就回调的时候提示被暂停,当时有发过工单询问原因,到目前 (04-07) 未收到回复。

2023-04-04 : 对使用了本程序的 E5 进行了“强制”过期。

看了下今年官方对用 续订程序 的操作来看,其实在 1-15 就开始“不满”了,进行了限制,我现在才反应过来,当时因该停止服务端的调用,减少损失。


程序于 2023 年 01 月 15 日更新部署教程有些许不同,请注意查看。

AZ 面板中已经被禁用的应用,无法删除,需要新建一个应用。

查看应用是否被禁用:关于续订程序出现授权出错问题


由于我前端是废的,界面将就看看就行了,不影响程序~
申请 office E5 开发者试用的教程
新版可续签的 Office 365 开发者试用订阅!E5(附自动续订的方法)
Onedrive 容量 1T 修改 为 5T,老帐号不删除重建

说明

  1. 此程序部署在我的服务器上,每隔 2 小时会自动调用 outlook api 获取邮件列表。
  2. 对于信息:只会保存必要的 client_id、client_secret,其他任何内容都不会保存。
  3. 会读取授权的 outlook 账号邮箱邮件,但不会保存任何信息,仅仅是调用 api。
  4. 请单独创建一个同域 E5 子账号进行授权,不要使用此账号进行发送、接收个人邮件,以免发生误会。

新手作代码辣鸡,估计会出现各种问题,所以还是不建议自己搭建。

项目地址:
https://github.com/luoye663/e5

使用教程

1、注册自己的 api key

登录进入 azure ,登录账号使用你的 e5 账户,就是以 xxx.onmicrosoft.com 开头的账户。
搜索“应用注册”。

2021-03-15:

现在不能直接搜索到了,目前两种方法可以找到 “应用注册”。

1)请搜索 “Azure Active Directory”,然后在 管理 - 应用注册

https://img.qyi.io/images/2021/03/15/image4a16f92abda6ef1f.png

2)或者直接点击直达链接:

https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

点击 “新注册”:

https://img.qyi.io/images/2020/03/02/5Hwwm2M43k642e14d99337925c.png

2023-01-15 更新

和之前不同的是:

  1. 受支持的帐户类型,请选择第一个:仅此组织目录(仅 xxx - 单一租户)中的帐户
  2. 重定向 URI (可选) 暂时不要填写。

https://img.qyi.io/images/2023/02/20/2jU3E.png

3)点击注册后记录以下信息:

  1. 应用程序(客户端)ID
  2. 客户端密码
  3. 目录(租户)ID

https://img.qyi.io/images/2023/02/20/2jwCc.png

创建客户端密码:

https://img.qyi.io/images/2020/03/02/vFP2hwG0DJ82d229f4e1db3b8c.png

2021-03-07:

最近很多同学反应授权报错 Invalid client secret is provided. 这里请注意了,客户端密码请复制 “值”,不要复制 ID。

2021-08-19:

客户端密码这里已经没有了“从不”,只能选 2 年。(别在意这些,谁也不知道 2 年后微软的策略会不会变,2 年换一次密钥也不麻烦)

https://img.qyi.io/images/2021/03/07/imagef0ec472a91456d9b.png

保存好以上 2 个 key,一会需要用到。

配置 api 权限:

https://img.qyi.io/images/2020/03/02/486QCsp5Lq88822506ae0778f5.png
https://img.qyi.io/images/2020/03/02/BAAxoWLsJCb8bdfc017e9e6ec0.png

勾选一下四个选项后,同时点击 代表 XX 授予管理员同意

PS: 这一步如果用的是子账号创建的 api,那么这一项是灰色的,不能点击。需要登录管理员账号,再点击 代表 XX 授予管理员同意

https://img.qyi.io/images/2020/03/02/dLBbs5dPsQef092254dea7b423.png

这个时候 api 的配置就算完成了。

2、添加 key 到自动订阅程序

进入 https://e5.qyi.io/
这里需要 GitHub 账户登录,同样的,我只能获取你在 GitHub 中的用户 id、用户名等基础信息(邮箱获取不了),其他的任何信息也获取不到(可自行尝试注册一个 GitHub Apps 测试)。

https://img.qyi.io/images/2021/02/07/MqFWUocRk2223d51a83136b771.png

登录后进入主页面。

2023-01-01:

进入主页面后,请先获取回调地址,每个人的地址都不同,请不要泄露以及复制别人的。

这一步骤是为了减少被判定为钓鱼应用的风险。

https://img.qyi.io/images/2023/02/20/2jmCa.png

https://img.qyi.io/images/2023/02/20/2jpgx.png

将这个地址复制,粘贴到 Azure 面板,步骤如下:

https://img.qyi.io/images/2023/02/20/2jBLk.png
https://img.qyi.io/images/2023/02/20/2jxRp.png

新建应用

名称随意输入,只是个标识而已,描述可空。

https://img.qyi.io/images/2021/02/07/0jQdNo4H0F31e606962bf2ab82.png

点击 配置

https://img.qyi.io/images/2021/02/07/sF0GV8RrIRcff9d79b888ae01e.png

填入上一步记录的:

  • 应用程序(客户端)ID
  • 客户端密码
  • 租户 ID

https://img.qyi.io/images/2023/02/20/2jjRV.png

点击下一步进行配置调用时间:

https://img.qyi.io/images/2021/02/07/chrome_utRYW7imVI3fc44c6428c5110c.png

  • 说明:单位 秒(最低调用频率为 60 秒,最高为 6 小时),例如: 30-60,代表在 30 秒-60 秒之间随机调用一次。

再点击下一步,到了 授权

https://img.qyi.io/images/2021/02/07/tktYiiDlTY4ae7b1edcfc28783.png

此时会跳转到 Microsoft Online OAuth2.0 授权页面,在这里请注意使用同一个域下的空账号(子账号)进行授权

(因为在这一步我能获取到授权的 outlook 账户邮件,但是程序不会保存,仅仅是调用 api。)以免在以后发生误会。

https://img.qyi.io/images/2020/03/01/image5a04cd92d780d42f.png

点击 “接受” 后,将会跳转回自动订阅程序。

https://img.qyi.io/images/2021/02/07/image3132e5bf78456777.png

到此时,授权就完成了。

3、下一步

已经没啦~
到这里你就可以不用管了,程序会每两个小时调用一次 outlook 的 api。
界面写得辣鸡,因为我不会前端呀~大家将就看看就行了。
过几天我会把删除功能加上,可以删除在程序里注册的账户。

交流群:959720211(已被封)

二群: 546596275

还是要说一下隐私安全问题

因为有几个读者也说到了,统一回答下:

  1. api 权限仅拥有 openid offline_access Mail.Read Mail.ReadWrite Mail.ReadBasic Mail.ReadBasic.ALL 这 6 个权限。
  2. 也就是说我仅仅能读取授权账户的邮件,其他任何事都做不了,且我写的这个程序没有保存任何除 key 之外的信息。
  3. 所以一开始我就说了,用子账户进行授权(空账户)及创建 api,这样不涉及到隐私及安全问题。
  4. 如果实在担心不想用了,直接在 azure 删掉 api 就可以了。
  5. (空)

4、FQA

Q:日志是空的

A:如果是新加入的账户,请等待系统自动调用。

Q:参数错误

A:如果 应用 id 与 密钥 都没有错误的情况下,那么创建的时候看一下 “任何组织目录(任何 Azure AD 目录-多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox)” 有没有选这个。

Q:什么时候续期

A:最后一个月中的任意一天会进行续期,目前是微软程序检测活跃情况,人工点击“一键续期”???

Q:REST API is not yet supported for this mailbox.

A:创建子账号的时候需要给 outlook 许可。

Q:显示 “此订阅处于非活动状态,将很快过期”

A:这个提示是少于 30 天就会显示,并非根据活跃情况显示的。

Q:过期了怎么办

A:在过期后的 2 个月内订阅还是可以用的,所以可以在 2 个月内取回数据。如果在过期 1 个月都还没有续订的话,那么就可以开始转移数据了。

Q:续期历史

2020-04-28 续期一次
2020-06-26 续期一次
貌似从 6 月 26 日开始后,基本上每天都会检测订阅,难道现在不用人工点击“一键续期”了?

5、注意问题

  1. 如果是在到期一个月调用,那么请用管理员账户登录,因为这个时候除了管理员能登录 outlook 以外,其他的子账户都不行!

6、关闭双重验证

群友发的:
https://img.qyi.io/images/2020/07/09/imagedf0c2c0d80803083.png

6、更新日志

2020-03-04:

  1. 加入调用时间显示,每日 0 点清空。

2020-04-17 11:12:

  1. 更新完成,加入随机调用时间。
  2. 会读取邮箱前 5 封邮件。

2020-04-21 01:04:

  1. 由于消息队列没有配置好,导致无法正常随机调用 api 问题。(已修复)

2020-04-22 23:04:

  1. 修复新注册的童鞋没有显示日志问题。
  2. 在调用时间范围内重复问题。

2020-08-19
维护中……

2020-08-23
已恢复

2020-12-20
增加同一账户多应用调用