4.7 KiB
收信规则 Shortcut
管理自动处理收到邮件的规则。优先使用 mail +rule-* shortcut,通过稳定英文 alias 编写条件和动作;只有需要当前 shortcut 尚未建模的服务端字段时,才回退到 mail user_mailbox.rules 原子 raw 命令。规则写操作需使用真实 rule_id,不要猜测 ID。创建、更新、删除规则需要按 SKILL.md 的高风险写规则获得用户确认并传 --yes;启停和排序是普通写操作,免 --yes。
常用 shortcut
# 列出规则,输出 semantic_spec、description、unknowns
lark-cli mail +rule-list --as user --user-mailbox-id me --format json
# 查看单条规则
lark-cli mail +rule-get --as user --user-mailbox-id me --rule-id "<rule_id>"
# dry-run 创建:主题包含 Alpha 时标为已读,不产生服务端副作用
lark-cli mail +rule-create --as user --dry-run \
--name "Alpha通知已读" \
--condition "subject:contains:Alpha" \
--action "mark_read"
# 创建同一规则
lark-cli mail +rule-create --as user \
--name "Alpha通知已读" \
--condition "subject:contains:Alpha" \
--action "mark_read" \
--yes
# 更新规则:未传字段会先读当前规则并保留;传 --condition/--action 会替换对应完整集合
lark-cli mail +rule-update --as user \
--rule-id "<rule_id>" \
--name "Alpha通知归档" \
--action "archive" \
--yes
# 启停规则
lark-cli mail +rule-disable --as user --rule-id "<rule_id>"
lark-cli mail +rule-enable --as user --rule-id "<rule_id>"
# 删除规则:真实删除必须显式 --yes;不确定时先 --dry-run
lark-cli mail +rule-delete --as user --rule-id "<rule_id>" --dry-run
lark-cli mail +rule-delete --as user --rule-id "<rule_id>" --yes
# 调整顺序:完整顺序或单条移动二选一
lark-cli mail +rule-reorder --as user --rule-ids "<rule_id_1>,<rule_id_2>,<rule_id_3>"
lark-cli mail +rule-reorder --as user --move-rule-id "<rule_id_3>" --before-rule-id "<rule_id_1>"
Alias 速查
条件 grammar:
--condition field:op:value
--condition field:op
--condition field
常用字段:from/sender、to/recipient、cc、to_or_cc、subject/title、body、attachment_name、attachment_type、any_address、all_mail/all、external、spam、not_spam、has_attachment。
常用操作符:contains/include、not_contains/exclude、starts_with/prefix、ends_with/suffix、equals/eq/is、not_equals/ne、contains_self/self、empty/is_empty。
动作 grammar:
--action kind
--action kind:key=value
--action kind:json={"key":"value"}
常用动作:archive、delete_mail/trash、mark_read/read、move_spam/spam、not_spam/never_spam、star/flag、mute_notification/mute、move_folder:folder_id=<id>。
--conditions / --actions 支持 JSON 或 @file。JSON 示例:
[
{"field":"subject","operator":"contains","value":"Alpha"},
{"field":"has_attachment"}
]
Unknown raw 策略
- 读路径宽容:
+rule-list/+rule-get遇到未知枚举或扩展字段仍输出规则,unknowns[]会说明无法识别的 raw 片段,raw会保留原始规则。 - 更新规则:
+rule-update是“传什么改什么”。只改名称、启停、match 或 stop-after-match 时保留未触碰的 raw;传入新的--condition(s)时替换 condition items,未传--match就保留当前 match_type;传入新的--action(s)时替换 action items。 - 输入校验:用户输入 alias/语义字符串时必须能映射到当前 shortcut 支持的枚举,否则报错;用户直接输入当前 shortcut 不认识的枚举数字,也报错。
- raw fallback:需要写入当前 shortcut 尚未建模的服务端字段时,读取
raw后使用原子user_mailbox.rules命令。
原子 raw fallback:主题包含文本 → 标记为已读
# 1. 创建规则:主题包含指定文本时标记为已读
lark-cli mail user_mailbox.rules create --as user \
--params '{"user_mailbox_id":"me"}' \
--data '{"name":"<rule_name>","is_enable":true,"ignore_the_rest_of_rules":false,"condition":{"match_type":1,"items":[{"type":6,"operator":1,"input":"<subject_text>"}]},"action":{"items":[{"type":3}]}}'
# 2. 验证规则
lark-cli mail user_mailbox.rules list --as user \
--params '{"user_mailbox_id":"me"}'
# 3. 删除规则
lark-cli mail user_mailbox.rules delete --as user \
--params '{"user_mailbox_id":"me","rule_id":"<rule_id>"}' \
--yes
Quick codes above: condition type=6 = subject, operator=1 = contains, action type=3 = mark as read.
原生 API
收信规则走 user_mailbox.rules 资源。参数不确定时先运行:
lark-cli mail user_mailbox.rules -h
lark-cli schema mail.user_mailbox.rules.<method>