Skip to content

发信前核对邮箱配置,折叠全角发件地址 - #204

Closed
JunieXD wants to merge 1 commit into
masterfrom
mailbox-audit-fixes
Closed

JunieXD wants to merge 1 commit into
masterfrom
mailbox-audit-fixes

Conversation

@JunieXD

@JunieXD JunieXD commented Oct 31, 2026

Copy link
Copy Markdown
Collaborator

为什么改

Codex 审查了发信邮箱、连接、代理、应用外壳、设置页和首次引导,发现几处真实会遇到的问题:

  1. 一封信正在登录发信服务器时,用户改了这个邮箱的地址,这封信仍从旧地址发出;界面显示的已经是新地址,之后的追问又用新地址。
  2. 信件样式页开着时 Agent 改了样式,页面仍显示旧的;用户再改另一项,会把旧值存回去。
  3. 用中文输入法输入全角的发件地址(me@qq.com)会被拒绝;只有一部分是全角的(me@qq.com)又能和 me@qq.com 存成两个邮箱,登录时用的还是全角用户名。
  4. Windows 上以管理员身份运行时开启的开机自启,登记在整台电脑上,普通身份关不掉,界面也不说明。
  5. 服务商限制登录频率时,测试连接仍然提示检查授权码、开通服务,学生容易反复测试、重建授权码,让限制持续。
  6. Windows 系统代理写成 [::1]:7890 时,带着方括号去查地址,连不上代理。

改了什么

  • 发信:真正发出前,在写事务里核对邮箱的当前配置和登录时的一致;变了就退出这次登录,信保持已批准,下一轮按新配置重新登录。
  • 信件样式:页面自己读样式。没有在保存的选择时,跟着核心里最新的样式显示;改一项时以最新样式为基础。
  • 发件地址:核心先用 cloud_api::tidy_email 折叠全角字符,和导师、账号的邮箱一致。界面去掉 type="email",免得浏览器拒绝全角输入,和账号表单的做法一样;认服务商时也先折叠。
  • 开机自启:关闭后如果仍登记着(Windows 上只有管理员能删的那份),报错说明要以管理员身份运行再关,不再当成功。插件不能改成只登记当前用户,开启时的行为没有改。
  • 限流提示:登录或请求被拒时,凡是会被判成限流的(和后台暂停用同一个判断),提示“服务商限制了登录或发信的频率……过一段时间再试,授权码不用改”。
  • 代理:Endpoint.host 存不带方括号的 IPv6 地址,显示和生成网址时再加上。
  • 测试用的假 SMTP 服务器多了一个登录钩子。
  • 文档:docs/design.md 写明 Windows 以管理员身份开启自启的情况。

怎么验证的

  • 新测试:
    • a_mailbox_edited_during_the_login_sends_as_edited:登录时停住,改邮箱地址后放行,这封信不发;下一轮从新地址发出;
    • an_address_is_added_once_in_any_letter_case 加了全角地址;
    • a_throttled_login_says_to_wait_not_to_change_the_code;
    • windows_proxy_settings 加了 IPv6;
    • 界面测试 shows what an Agent saved and does not save the old style back。
  • 去掉对应的修改后,这 5 个测试各自失败;改上后通过。
  • 本地通过:
    • mailbox、net、send、task、api、receive、fakemail、app 的测试(连假邮件服务器的测试用 2 个线程跑);
    • clippy;
    • pnpm --dir ui check。
  • mailbox 的 connect 测试本地超时,和这次改动无关:本机 target/debug/deps 积了 88 万个文件,macOS 校验证书时会遍历测试程序所在的目录(CFBundleGetMainBundle),这一步就超过了 30 秒。换回 master 的假 SMTP 也一样超时。清掉编译产物后在本地补跑,CI 上也会跑。
  • 没能验证的:Windows 上的开机自启和注册表代理没有实机跑;完整的 pnpm check 本地太慢,以 CI 为准。

@JunieXD

JunieXD commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator Author

这个改动已在 master 上(c5cb6678)。仓库改为直接在 master 上提交,不再走 PR,所以关掉。

@JunieXD JunieXD closed this Nov 4, 2026
@JunieXD
JunieXD deleted the mailbox-audit-fixes branch November 4, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant