基于微信的邮箱新邮件推送

基于微信的邮箱新邮件推送

最近主要做了2个东西:

  1. 合肥医保口罩购买预约网站分析

  2. 通过微信推送邮箱新邮件来信提醒

第一个因为网站已经下线,当时也没截图,导致想写过程,没素材。所以来写写通过微信推送邮箱的来信提醒。

一、背景

估计有人会问我在手机上登录邮箱账号,邮箱来信不自然能收到提醒吗?

主要是最近小丸子同学的公司邮箱在苹果手机上新邮件推送延迟。经常收到2天前的邮件提醒,如果不进入邮箱app主动收取邮件,根本不知道有邮件过来。对此小丸子同学也是跟我抱怨和很久,一直以为是手机坏了。最后分析了一下,确认是邮箱的问题(她的同事也有这个问题)。

虽然不是手机的问题,但是问题总是要解决。最后决定我通过代码检测她的邮箱是否有新邮件,如果有新邮件,就通过微信告知她。让她及时进入邮件app查看。

好了,方案决定了,那就开始吧!

二、设计

步骤很简单。

  1. 定时任务每分钟查询邮箱收件箱(她们公司邮箱只支持pop3)

  2. 检查是否有新邮件,如果有发送微信消息通知

这里需要解决2个问题:

  1. 怎么收取并检查新邮件?

  2. 代码怎么发送微信?

方案:

  1. java-mail库支持pop3收取邮件,但是会收取全部邮件,通过本地保存一份已收邮件列表,通过比对得出新邮件列表。

  2. 发微信有几种选择:

1 微信公众号(需要企业认证才能主动发送消息)-门槛高,代码实现简单,腾讯提供完备的api。

2 xposed编写模块hook安卓微信客户端(需要一个root的安卓手机)-门槛低,但是代码实现比较复杂,不过网络上有很多现成的介绍,主要是root的安卓手机比较麻烦。

很显然,第2个问题我选择了xposed hook 微信客户端。因为我办法做企业认证。不过之前微信对使用xposed的账号进行了一轮封锁,这个方法还是有风险。但是我没其他的选择。

这里需要知道几个知识点:

  1. xposed框架 -包括xposed安装,模块的使用

  2. java实现定时任务。我采用的springboot

一开始准备直接在xposed框架中,当hook住微信的时候启动定时任务。毕竟安卓app(xposed模块)也是java写。这样肯定简单。但是因为我不是专业安卓开发,不知道怎么存储已收邮件列表。特别在xposed的模块中,操作sqlite比较麻烦。

最后决定xposed框架中当hook住微信时启动一个http服务器,再另外通过springboot 启动定时任务,当需要发送微信时,通过http方式发送请求,xposed中的服务器收到请求后,调用微信的代码将消息发送出去。

所以整体结构是这样的。

基于微信的邮箱新邮件推送

xposed模块编写

//TODO 暂时不知道怎么把代码写清楚,回头补一下github地址,直接上代码(吐槽下上海移动,竟然把github屏蔽了,导致家里上不了github)

springboot定时任务

//TODO 暂时不知道怎么把代码写清楚,回头补一下github地址,直接上代码