退信/巡检开关移入 params.ini [bounce],命令行仅作临时覆盖
原来这些开关只能靠命令行传,每次群发都得敲一长串,也容易漏。现在统一在 params.ini 的 [bounce] 小节长期配置,优先级为 命令行 > params.ini > 内置默认。 改动: - load_params 新增 [bounce] 解析:watch_bounces / watch_every / prune_unknown / no_invalid_list / invalid_file / bounce_report / imap_host / imap_port / since / since_days;新增 _parse_bool 支持 1/0、yes/no、true/false、on/off, 留空或非法值忽略并回退默认(带警告) - 相关 argparse 默认值改为 None,以便区分「用户显式传了」还是「没传」—— 没传才用 params.ini 的值,保证命令行优先级 - save_params 回写 [bounce](用当前生效值),并用 _preserve_extra_sections 原样保留文件里其它手写小节,避免保存时把配置抹掉 - 交互模式参数摘要里显示巡检开关的当前值与来源 - 把 argparse 构造抽成 build_arg_parser(),便于测试 - params.ini 补上 [bounce] 小节的默认配置与注释;README 同步
This commit is contained in:
@@ -42,12 +42,29 @@ README — TamaBox 站内信群发工具(mail-broadcast)
|
||||
delay = 1.0
|
||||
group_pause = 3.0
|
||||
|
||||
[bounce] ; 退信核查 / 发送中限流巡检(见下节)
|
||||
watch_bounces = 1 ; 发送中巡检限流退信,发现即中止
|
||||
watch_every = 10 ; 每发 N 封巡检一次
|
||||
prune_unknown = 0 ; 未分类退信是否也按可重试补发
|
||||
no_invalid_list= 0 ; 停用无效地址清单
|
||||
invalid_file = ; 留空用默认 broadcast_invalid.json
|
||||
bounce_report = ; 留空用默认
|
||||
imap_host = ; 留空按 SMTP 域名推导
|
||||
imap_port = 993
|
||||
since = auto ; auto = 从断点清单最早记录开始扫
|
||||
since_days = 3
|
||||
|
||||
conf/app.ini 路径的解析优先级:
|
||||
命令行 -c > params.ini [path] config > 环境变量 TAMABOX_CONFIG_PATH > ./conf/app.ini
|
||||
|
||||
安全边界:params.ini 不提供 --send / --yes——群发只能在命令行显式指定
|
||||
(或走交互模式在会话中确认),防止改配置文件时误发全量邮件。
|
||||
|
||||
优先级:**命令行参数 > params.ini > 内置默认**。所有 [bounce] 项都有同名命令行
|
||||
参数可临时覆盖(如 `--watch-every 5`、`--no-watch-bounces`)。布尔值写
|
||||
`1/0`、`yes/no`、`true/false`、`on/off` 均可,留空或写错会忽略并回退默认
|
||||
(控制台会给出警告)。
|
||||
|
||||
交互模式(默认)
|
||||
--------
|
||||
直接运行 `python3 broadcast.py` 即进入交互模式(无需加任何参数);
|
||||
@@ -193,9 +210,19 @@ conf/app.ini 路径的解析优先级:
|
||||
- 善后:把限流退信的地址从断点清单剔除,等限制恢复后重跑自动补发
|
||||
- 巡检到的「地址不存在」类退信照旧写入无效地址清单
|
||||
|
||||
python3 broadcast.py --send --yes # 默认已开启巡检
|
||||
python3 broadcast.py --send --yes --watch-every 5 # 每 5 封查一次(更及时,IMAP 登录更频繁)
|
||||
python3 broadcast.py --send --yes --no-watch-bounces # 关闭巡检(--to 单封测试本就关闭)
|
||||
这两个开关**优先写在 params.ini 的 [bounce] 小节**(长期生效),命令行只用来
|
||||
临时覆盖:
|
||||
|
||||
# params.ini
|
||||
[bounce]
|
||||
watch_bounces = 1 ; 0 关闭巡检
|
||||
watch_every = 10 ; 每 10 封查一次
|
||||
|
||||
# 命令行临时覆盖(优先级更高,只影响这一次)
|
||||
python3 broadcast.py --send --yes --watch-every 5
|
||||
python3 broadcast.py --send --yes --no-watch-bounces
|
||||
|
||||
(--to 单封测试时本就不巡检)
|
||||
|
||||
中止时的输出示例:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user