Skip to content

Releases

OTSMail Android 0.3.4

OTSMail Android 0.3.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 12:50

新增功能

本版没有新增面向用户的功能,以第三方邮箱连接安全加固、协议健壮性与详情页操作一致性调整为主。

变更

  • 第三方邮箱详情页底栏与主账号统一:改用与主账号详情相同的图标底栏(回复 / 回复全部 / 转发 / 删除 / 更多),五项对齐;星标、标记已读/未读收进「更多」浮层。
  • 第三方链路上不支持的服务端能力明确置灰:「移动到分类」「翻译 / AI 摘要 / 智能回复」「标记为垃圾邮件」在「更多」中置灰,点击会说明这些能力依赖 otsmail 服务端、第三方邮件不在服务端库中,需在邮箱网页版操作。

修复

  • 补上 TLS 主机名校验:探测、IMAP、SMTP、STARTTLS 共七个调用点统一走 ExtTls.wrap,握手前显式设置 endpointIdentificationAlgorithm = "HTTPS"。此前裸 SSLSocket 只验证书链、不验主机名,而这条通道传输的是明文 IMAP LOGIN 与 SMTP AUTH PLAIN。
  • 无 UIDPLUS 的服务器上删除不再误删:此前在没有 UIDPLUS 时会退化成无条件 EXPUNGE,清掉信箱里所有带 \Deleted 的邮件(可能包括其他客户端标记待删的信)。现在只 COPY 到 Trash 并标记 \Deleted,不再执行 EXPUNGE。
  • IMAP 协议响应增加大小上限:单行协议响应上限 64KB,单封邮件 literal 上限 32MiB;超限明确报错并中止读取,不再无界分配内存,也不会把超长的邮件正文当成协议行继续读。
  • data: 附件改为解码前估算大小:先按 Base64 文本长度估算解码后字节数,超过 10MB 直接拒绝,避免整份解码后才发现超限导致峰值内存不受控。

已知问题

  • 没有 UIDPLUS 的 IMAP 服务器上,删除只把邮件复制到 Trash 并标记 \Deleted,不会立即从当前信箱的服务器存储中物理清除;多数服务器会在自身清理周期处理,表现为「稍后才消失」。这是为避免误删其他邮件的有意选择,不是遗漏。
  • TLS 主机名校验开启后,证书主机名与连接域名不匹配的服务器会直接失败,不再降级放行;个别配置不规范的企业邮箱可能因此无法连接。

安装提示

  • 同签名可直接覆盖安装,登录态与本地邮件缓存保留。
  • 覆盖安装会重置通知权限(POST_NOTIFICATION 回到 ignore),装完需到系统设置里手动重新开启一次,否则新邮件提醒不会弹出。
  • 回退旧版需要先卸载,本地邮件缓存会清空。

本版仍未经真机验证的项

  • TLS 主机名校验:只在本地编译与单元测试中通过,尚未连接真实 IMAP/SMTP 服务器(QQ / 163 / Gmail 都未实测)。
  • 无 UIDPLUS 的删除路径:未在缺少 UIDPLUS 的真实服务器上验证「复制到 Trash + 标记 \Deleted、不 EXPUNGE」的实际表现与后续服务器清理时机。
  • IMAP 响应上限:未构造超限响应做端到端验证,只确认正常路径与既有单测不受影响。
  • 第三方邮箱详情页新底栏与「更多」浮层:未做真机交互验证,包括窄屏排布、深色主题、浮层位置与置灰项提示文案。
  • data: 附件估算拒绝:未用接近 10MB 的真实 data: 附件做真机验证。

正式签名包,可直接覆盖升级。SHA-256:837ef54b4cfd50adaa0d61c588e09b47ef80628cb7449410fb8dff2b091373e1

该版本的 R8 混淆映射不随 Release 公开,仅归档在本次 Actions artifact(保留 90 天,文件名 mapping-v0.3.4.txt)。

OTSMail Android 0.3.3

Choose a tag to compare

@github-actions github-actions released this 07 Nov 22:41

新增功能

本版以扫码修复为主,没有新增功能。

变更

  • 扫码入口位置:从「个人设置」挪到侧边栏(抽屉)头像行右侧的扫码按钮;设置页不再保留第二个入口。长按桌面图标的「扫一扫」快捷方式与 otsmail://qr 深链保持不变。

修复

  • 二维码完全无法识别:此前用 ZXing 的 PlanarYUVLuminanceSource.rotateCounterClockwise() 旋转 90/270 度的相机帧,而该类型不支持旋转,每帧都会抛异常又被静默吞掉,界面表现为「相机有画面但扫什么都没反应」。现改为按 rowStride(含行尾 padding)自行取出 Y 平面并做 90/180/270 度旋转,再交给 ZXing 解码。
  • 分析分辨率过大:分析流此前会被选到 3024×3024,每帧旋转与二值化开销很大;现固定目标 1280×720(实测落到 960×720),明显降低每帧耗时。
  • 没有自动对焦:预览流与分析流都设置 CONTROL_AF_MODE_CONTINUOUS_PICTURE,进入扫码页后每 2.5 秒对画面中心补一次对焦,并支持点击屏幕对焦到点击位置。
  • 没有成功反馈:首次识别到 OTSMail 登录二维码时播放一声短提示音并短震动一次,命中后立即停止分析,不会重复触发。
  • 无效二维码静默无提示:识别到二维码但不是 OTSMail 格式时,明确提示「这不是 OTSMail 登录二维码」;连续扫到同一张无效码不会反复提示。

已知问题

  • 扫码端到端(网页出码 → App 扫码确认 → 网页登录)仍需真机完整走通验证。服务端 /login/qr 已确认线上可用(返回 200 与真实票据),不再存在「未部署」问题。

安装提示

  • 同签名可直接覆盖安装,登录态与本地邮件缓存保留。
  • 覆盖安装会重置通知权限(POST_NOTIFICATION 的 app-op 回到 ignore),装完需要到系统设置里手动再开启一次,否则新邮件提醒不会弹出。

本版仍未经真机验证的项

  • 有效二维码的完整链路:本版只通过 adb 日志确认了「帧能到达、90° 旋转不再抛异常、解码返回 null(画面里没有码)」,尚未在真机扫到真实网页二维码并走完确认登录。
  • 提示音与震动:实际音量、时长与听感未验证。
  • 对焦效果:自动对焦与点屏对焦后的实际识别距离、暗光成功率未验证。
  • 无效二维码提示:只在代码层确认提示文案与去重逻辑,未在真机对照测试。
  • 入口位置:抽屉头像行右侧的扫码按钮在窄屏/长邮箱地址下的排布未在真机确认。

正式签名包,可直接覆盖升级。SHA-256:fbba03f5c60bea2fdc942db3a5e7f1e1a9b25a03976168a011f791475b44e2bf

该版本的 R8 混淆映射不随 Release 公开,仅归档在本次 Actions artifact(保留 90 天,文件名 mapping-v0.3.3.txt)。

OTSMail Android 0.3.2

Choose a tag to compare

@github-actions github-actions released this 07 Nov 21:49

新增功能

  • 扫码登录:网页端生成二维码 → App 内扫码并确认 → 网页端完成登录。入口在「个人设置 → 扫一扫」,也可长按桌面图标选择「扫一扫」;未登录时会先引导登录再继续扫码。
  • 验证码一键识别与复制:邮件正文里识别到验证码时,详情页顶部出现「复制验证码」;通知栏与弹窗提醒(heads-up)上提供「复制验证码」按钮,不用先打开 App。识别只认验证码类关键词附近的短数字,订单号、快递单号、金额、日期、手机号等不会误判。

变更

  • 第三方邮件提醒改为「保持长连接(第三方邮件提醒)」开关(外部邮箱设置页):
    • 开:第三方邮箱走 IMAP IDLE,收到新邮件立即提醒(即原来「自动 / 始终用长连接」的行为);
    • 关:停掉 IDLE 服务,不连长连接、不启动 15 分钟轮询兜底、不弹第三方通知;收件箱手动同步与下拉刷新照旧。
    • 原「自动 / 始终用长连接 / 只用设备推送(调试)」三选一已删除,不再保留并存的调试项。
    • 存量值兼容:auto / idle 读作开;fcm(旧的「只用设备推送(调试)」,实际收不到提醒)读作关;未设置或未知值读作开。
  • otsmail 自身邮件的 FCM 推送在任何开关状态下都不受影响:不注销 token、不改登记、不干扰站内通知。

修复

本版以新增功能与设置语义修正为主,没有单独的缺陷修复项。

已知问题

  • 扫码端到端未验证:依赖服务端先部署 /login/qr 与 /my/qr/confirm(当前线上可能 404);服务端未部署时网页取码与 App 确认都会失败。
  • 服务端 confirm 不返回发起方 IP/UA,App 的确认框只能显示通用文案,用户无法核对来源设备与位置。

安装提示

  • 同签名可直接覆盖安装,登录态与本地邮件缓存保留。
  • 覆盖安装会重置通知权限(POST_NOTIFICATION 的 app-op 回到 ignore),装完需要到系统设置里手动再开启一次,否则新邮件提醒不会弹出。
  • 回退旧版需要先卸载,本地邮件缓存会清空。

本版仍未经真机验证的项

  • 扫码登录端到端:未在服务端部署完成后跑通「网页出码 → App 扫码确认 → 网页登录」全链路。
  • 相机表现:真机相机预览方向、对焦、暗光下的识别成功率未验证。
  • 桌面快捷方式:「长按图标 → 扫一扫」未在真实启动器上确认。
  • 通知栏复制:复制 action 在锁屏与通知折叠态下的可见性、可点击性未验证。
  • 关闭提醒后的服务停止:开关拨到关后 ExtIdleService 停止、轮询兜底不再启动,目前只做了代码层确认,未在真机上观察功耗与通知残留。

正式签名包,可直接覆盖升级。SHA-256:a146a8d9d2ca19baac04be162fd34bb184593ea29c028fdf7b948d22cf96e7bf

该版本的混淆映射见附件 mapping-v0.3.2.txt(SHA-256:31c5d1d68660a4aaa102ed72d25d650e321aebb7baa0b97b2906e16a93882a95),用于还原 R8 混淆后的崩溃堆栈。