原来这些开关只能靠命令行传,每次群发都得敲一长串,也容易漏。现在统一在 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 同步
49 lines
1.6 KiB
INI
49 lines
1.6 KiB
INI
; broadcast.py 参数文件:每次运行自动读取;命令行参数优先级更高
|
||
; 注意:本文件不控制 --send/--yes,正式发送仍需命令行显式指定
|
||
|
||
[path]
|
||
; conf/app.ini 路径(相对路径按运行脚本时的当前目录解析)
|
||
config = ../auto/conf/app.ini
|
||
|
||
[site]
|
||
site_url = https://box.shiroko.one
|
||
box_prefix = /_/
|
||
|
||
; 自定义占位符:模板里用 {{键名}} 引用
|
||
[vars]
|
||
expire_date = 2026-12-24
|
||
old_domain = box.tama.guru
|
||
|
||
[send]
|
||
; to = 可选:默认测试收件邮箱(正式群发用命令行 --send,不加 --to)
|
||
delay = 1.0
|
||
group_pause = 3.0
|
||
|
||
; 退信核查 / 发送中限流巡检开关
|
||
; 这些都能在 params.ini 里长期配置,命令行同名参数可临时覆盖
|
||
[bounce]
|
||
; 发送中巡检收件箱:出现「外发频率超过邮件系统限制」类限流退信立即中止发送
|
||
; 中止后会把限流地址从断点清单剔除,等限制恢复重跑即自动补发
|
||
watch_bounces = 1
|
||
|
||
; 每发 N 封巡检一次退信。调小更及时,但 IMAP 登录更频繁(不建议 < 5)
|
||
watch_every = 10
|
||
|
||
; 退信核查时,分类不明的退信是否也按「可重试」一并剔除补发(默认 0,保守不补发)
|
||
prune_unknown = 0
|
||
|
||
; 停用无效地址清单:既不跳过已知无效地址,也不写入新的硬退信
|
||
no_invalid_list = 0
|
||
|
||
; 留空则用脚本同目录的默认文件名
|
||
invalid_file =
|
||
bounce_report =
|
||
|
||
; IMAP(退信核查要用发件邮箱的 IMAP;留空则按 SMTP 域名推导 smtp.xxx → imap.xxx)
|
||
imap_host =
|
||
imap_port = 993
|
||
|
||
; since = auto 表示从断点清单最早一条发送记录的时间开始扫描,只查本次群发的退信
|
||
since = auto
|
||
since_days = 3
|