技术相关 技术相关 关注:112 内容:80

最新微软邮箱(outlook/hotmail)协议取信(imap)方式

  • 查看作者
  • 打赏作者
    • Lv.1
      优质作者

      前言

      今年8月份,微软邮箱突然不能用imap收信了。反应到Zennoposter就是红字提示错误,我还试过专属应用密码等一系列方式,发现都登不上。

      最新微软邮箱(outlook/hotmail)协议取信(imap)方式

      当时我网店的存货为了检测写过一个python程序用imap检测邮箱可用性,那天开始突然所有邮箱都不可用了。检查发现只有pop3协议还能收,谁知没收几天突然pop3也不行了。

      微软邮箱可谓是做项目神器,价格低廉,用的人多。比起高贵的gmail,微软价格便宜,登录方便,极少风控(风控随便输手机号就能解)。比起更便宜的mail.ru/ramble/proton等,微软用户多,尤其是一线国家用户多,项目很少针对微软邮箱风控。

      当时我觉得很可惜,准备用其他曲线救国的方法,解析一下网页版的数据。实际脚本写出来才发现,就登录那一步至少十几种不同的逻辑随机出现,到可以取邮件那里前摇时间过长,而且非常浪费流量。

      oauth2

      一番搜索后发现原来是微软改了登录认证协议,不能再使用账号密码,需要使用oauth2协议登录。

      oauth2的登录协议我也搞不清楚具体是怎么回事,流程差不多是先要账号密码登录拿refresh token,再用授权码拿access token,然后这个access token就可以用来收信了。

      具体细节在这里:使用 OAuth 对 IMAP、POP 或 SMTP 连接进行身份验证 | Microsoft Learn

      然而登录这一步,就必须要输入备用邮箱,否则7天后会锁定,而且就算拿到token,还要定时刷新,否则就要重新登录。

      实现方法

      具体实现方法如下:

      1. Azure注册一个APP,申请mail.read权限

      2. 获取授权URL

      3. 手动登录,授权

      4. 取得授权码,生成refresh token,有效期90天

      5. 用refresh token生成access token,有效期1小时

      6. 使用access token登录IMAP

      对于Zennoposter来说,还有个坏消息。oauth2登录imap时要求在请求头带上token,现阶段ZP完全做不到这一点,按照ZP开发团队的尿性未来大概率也不会有。

      所以为了方便自己使用我开发了一套程序,ZP的脚本用于完成订阅和授权,python用于取信并返回JSON格式。

      最新微软邮箱(outlook/hotmail)协议取信(imap)方式

      实测效果还不错。但是因为登录过程中会添加辅助邮箱,不是每个人都能接受,我就不更到网店里了。有需求可以私下联系。

      最新微软邮箱(outlook/hotmail)协议取信(imap)方式

      请登录之后再进行评论

      登录
    • 发布
    • 任务
    • 帖子间隔 侧栏位置: