From 2a26a3b12766dbbb111d6db2e912ff48a3d974e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=80=B8?= <6180520@gmail.com> Date: Sun, 9 Aug 2026 11:33:41 +0800 Subject: [PATCH] =?UTF-8?q?[codex]=20=E5=90=88=E5=B9=B6=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E7=BA=A7=E4=B8=8E=E9=82=AE=E7=AE=B1=E5=8D=95=E7=8B=AC=E8=BD=AC?= =?UTF-8?q?=E5=8F=91=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: merge account and mailbox forwarding * docs: prepare v1.2.20 release --------- Co-authored-by: zxyszx <299979470+zxyszx@users.noreply.github.com> --- .github/release-notes/v1.2.20.md | 3 + .github/workflows/docker.yml | 12 +- apps/api/internal/app/app_test.go | 20 ++- apps/api/internal/app/forwarding_delivery.go | 5 +- apps/web/src/pages/profile.tsx | 145 +++++++++++++++---- 5 files changed, 146 insertions(+), 39 deletions(-) create mode 100644 .github/release-notes/v1.2.20.md diff --git a/.github/release-notes/v1.2.20.md b/.github/release-notes/v1.2.20.md new file mode 100644 index 0000000..06c532d --- /dev/null +++ b/.github/release-notes/v1.2.20.md @@ -0,0 +1,3 @@ +- 调整邮件转发规则:账号级转发固定作用于所有邮箱,并与单个邮箱追加的转发目标同时生效。 +- 优化单个邮箱转发设置:账号级目标默认勾选、置顶并锁定,邮箱及转发地址按数字和字母排序,目标较多时可查看完整列表。 +- 优化 Telegram 版本频道通知排版:使用精简标题、分层说明和完整更新链接,提升手机端阅读体验。 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ec522ca..cbde6f0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -289,18 +289,20 @@ jobs: sections = [] for index, entry in enumerate(entries, 1): - parts = re.split(r"[,;。]", entry, maxsplit=1) + parts = re.split(r"[::]", entry, maxsplit=1) + if len(parts) == 1: + parts = re.split(r"[,;。]", entry, maxsplit=1) title = parts[0].strip() description = parts[1].strip() if len(parts) > 1 else "" - section = f"{index:02d} {html.escape(title)}" + section = f"{index:02d} · {html.escape(title)}" if description: - section += "\n" + html.escape(description.rstrip("。") + "。") + section += "\n
" + html.escape(description.rstrip("。") + "。") + "" sections.append(section) tag = os.environ["RELEASE_TAG"] - prefix = f"NewSzxcn Email {html.escape(tag)}\n新版本现已发布\n\n本次更新\n\n" + prefix = f"NewSzxcn Email {html.escape(tag)}\n新版本现已发布\n\n更新内容 · {len(sections)} 项\n\n" release_url = html.escape(os.environ["RELEASE_URL"], quote=True) - footer = f'\n\n🔗 查看本次更新' + footer = f'\n\n查看完整更新说明 ↗' available = max(0, 3600 - len(prefix) - len(footer)) visible_sections = [] used = 0 diff --git a/apps/api/internal/app/app_test.go b/apps/api/internal/app/app_test.go index 52202b8..a2a3a1f 100644 --- a/apps/api/internal/app/app_test.go +++ b/apps/api/internal/app/app_test.go @@ -2756,8 +2756,20 @@ func TestInboundForwardingSettingsAndDelivery(t *testing.T) { if err := a.db.QueryRow(`SELECT recipients_json FROM send_queue WHERE source=? AND sent_message_id=?`, sendSourceForwarding, secondID).Scan(&recipientsJSON); err != nil { t.Fatal(err) } - if !strings.Contains(recipientsJSON, "mailbox-forward@example.test") || !strings.Contains(recipientsJSON, "mailbox-forward-two@example.test") || strings.Contains(recipientsJSON, "account-forward@example.test") || strings.Contains(recipientsJSON, "account-forward-two@example.test") { - t.Fatalf("mailbox forwarding should override account target, recipients=%s", recipientsJSON) + if !strings.Contains(recipientsJSON, "account-forward@example.test") || !strings.Contains(recipientsJSON, "account-forward-two@example.test") || !strings.Contains(recipientsJSON, "mailbox-forward@example.test") || !strings.Contains(recipientsJSON, "mailbox-forward-two@example.test") { + t.Fatalf("mailbox forwarding should include account and mailbox targets, recipients=%s", recipientsJSON) + } + + if code := admin.do("POST", "/api/me/forwarding/account", map[string]any{"targetEmails": []string{"account-forward-two@example.test"}}, &settings); code != http.StatusOK { + t.Fatalf("update account forwarding after mailbox forwarding code=%d settings=%+v", code, settings) + } + raw = []byte("From: sender@example.test\r\nTo: admin@lanqin.local\r\nSubject: account changed\r\nMessage-ID:
暂未添加验证邮箱,请先点击「管理验证邮箱」添加。
} -提示:每个邮箱可单独设置多个转发目标(点击邮箱列表中的「转发」按钮),单独设置会覆盖账号级配置。
+提示:点击邮箱列表中的「转发」按钮,可在账号级目标之外追加该邮箱自己的转发目标。
{externalImapEnabled && ( @@ -1390,16 +1402,42 @@ function MailboxManagement({账号级目标已置顶锁定,不能在单个邮箱里取消;下方可追加邮箱单独目标。
}暂未添加验证邮箱,请先点击「管理验证邮箱」添加。
}