Repository navigation
OTSMail Android 0.3.4
Pre-release
Pre-release
新增功能
本版没有新增面向用户的功能,以第三方邮箱连接安全加固、协议健壮性与详情页操作一致性调整为主。
变更
- 第三方邮箱详情页底栏与主账号统一:改用与主账号详情相同的图标底栏(回复 / 回复全部 / 转发 / 删除 / 更多),五项对齐;星标、标记已读/未读收进「更多」浮层。
- 第三方链路上不支持的服务端能力明确置灰:「移动到分类」「翻译 / AI 摘要 / 智能回复」「标记为垃圾邮件」在「更多」中置灰,点击会说明这些能力依赖 otsmail 服务端、第三方邮件不在服务端库中,需在邮箱网页版操作。
修复
- 补上 TLS 主机名校验:探测、IMAP、SMTP、STARTTLS 共七个调用点统一走
ExtTls.wrap,握手前显式设置endpointIdentificationAlgorithm = "HTTPS"。此前裸SSLSocket只验证书链、不验主机名,而这条通道传输的是明文 IMAPLOGIN与 SMTPAUTH 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)。