v2.6.0: 接入不再自动建 catch-all 邮箱(手动添加);删除账号/域名时清理 Cloudflare 侧资源(关闭 Email Routing + 删除 Email Worker,尽力而为+告警)

This commit is contained in:
bigcode
2026-10-01 02:19:30 +08:00
parent 830ca85ebd
commit c4b5e65159
9 changed files with 350 additions and 39 deletions
+5 -3
View File
@@ -247,10 +247,12 @@ export function AccountsPage() {
e.stopPropagation();
modal.confirm({
title: `删除账号 ${row.name}?`,
content: "将撤销该账号的 Worker 凭据并标记为 revoked;Email Worker 将无法访问 Console。",
content:
"将撤销该账号的 Worker 凭据并标记为 revoked;同时删除 Cloudflare 上的 Email Worker 与各域名的 Email Routing 配置。",
onOk: async () => {
await deleteAccount(row.id);
message.success("已删除");
const r = (await deleteAccount(row.id)) as { warnings?: string[] };
if (r.warnings?.length) message.warning(`已删除,但 Cloudflare 清理未完全成功:${r.warnings[0]}`);
else message.success("已删除(Cloudflare 侧资源已一并清理)");
void load();
},
});
+5 -3
View File
@@ -222,11 +222,13 @@ export function DomainsPage() {
onClick={() =>
modal.confirm({
title: `删除域名 ${row.name}?`,
content: "仅在域名无邮箱时可删;删除后重新 OAuth 授权会再次同步。",
content:
"将同时关闭该域名在 Cloudflare 的 Email Routing;仅在域名无邮箱时可删,删除后重新 OAuth 授权会再次同步。",
onOk: async () => {
try {
await deleteDomain(row.id);
message.success("已删除");
const r = (await deleteDomain(row.id)) as { warnings?: string[] };
if (r.warnings?.length) message.warning(`已删除,但 Cloudflare 清理未完全成功:${r.warnings[0]}`);
else message.success("已删除(Cloudflare 侧 Email Routing 已关闭)");
void load();
} catch (err) {
message.error(err instanceof Error ? err.message : "删除失败");