# mail +draft-edit > **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 编辑已有的邮件草稿。命令会读取当前原始 EML,应用最小化补丁,然后将更新后的草稿写回。 简单元数据编辑使用直接参数: - `--set-subject` - `--set-to` - `--set-cc` - `--set-bcc` **正文整体替换的快捷方式:** `--body ` / `--body-file `(二选一互斥)会自动展开为 `set_body` op。如果只想做整段正文替换且不需要保留引用区,用这两个 flag 即可,无需写 patch-file。要保留引用区或做更精细的 op 组合,仍走 `--patch-file`。两个入口与 `--patch-file` 内的 `set_body` / `set_reply_body` 互斥。 **CRITICAL - 编辑邮件内容前 MUST 先用 Read 工具读取 [references/lark-mail-html.md](references/lark-mail-html.md),其中包含邮件书写规范** ## 正文编辑:快捷 flag 与 typed op 的选择 整段替换正文且不需要保留引用区时,可直接使用 `--body` / `--body-file`。需要保留引用区、修改引用区或组合高级正文编辑时,通过 `--patch-file` 传入 typed body op,有两个 op 可选: | 情况 | op | 行为 | |------|-----|------| | 普通草稿(无引用区) | `set_body` | 替换用户撰写内容 | | 回复/转发草稿,编辑用户撰写部分 | `set_reply_body` | 替换用户撰写部分,自动重新拼接引用区。传入的 value 只包含新的用户撰写内容,**不要包含引用区** | | 回复/转发草稿,编辑引用区内容 | `set_body` | 传入含完整引用区的 HTML 进行替换 | | 用户明确要去掉引用区 | `set_body` | 不包含引用区即可 | **判断方法:** 运行 `--inspect`,若返回 `has_quoted_content: true`,说明草稿包含引用区(由 `+reply` 或 `+forward` 生成)。 **关键区别:** - `set_reply_body` 的 value = **纯用户撰写内容**(不含引用区),引用区会自动重新拼接 - `set_body` 的 value = 可含可不含引用区 **系统托管元素自动保留(两个 op 通用):** 签名块(`lark-mail-signature`)和超大附件卡片(`large-file-area-*`)不属于用户撰写内容,是由 `insert_signature` / `add_attachment` 等 op 管理的草稿级元素。`set_body` 和 `set_reply_body` 都会自动保留它们(普通附件 MIME part 也一样不受正文编辑影响)。若 value 里显式包含相应元素,则尊重用户的显式指定,不再自动注入。删除签名/附件请用对应的专用 op(`remove_signature` / `remove_attachment`)。 ### 正文编辑:plain+HTML 耦合草稿 当草稿同时包含 `text/plain` 和 `text/html` 部分时,它们构成耦合对。`set_body` 和 `set_reply_body` 均更新 HTML 正文并自动重新生成纯文本摘要。此时务必传入 HTML 作为输入,因为原始主正文为 `text/html`。 ## 安全约束 此命令会更新真实草稿。调用前须与用户确认: 1. 草稿 ID 2. 最终收件人范围(To/Cc/Bcc) 3. 最终主题和正文 4. 是否需要附件、内嵌图片或其他高级编辑 ## 命令 ```bash # 编辑草稿元数据(主题、收件人) lark-cli mail +draft-edit --draft-id --set-subject '更新后的主题' --set-to alice@example.com,bob@example.com # 快速完整替换正文 lark-cli mail +draft-edit --draft-id --body '

更新后的正文

' # 高级正文编辑(如保留回复/转发引用区) lark-cli mail +draft-edit --draft-id --patch-file ./patch.json # 查看草稿(只读)— 返回包含 has_quoted_content、attachments_summary 和 inline_summary 的投影 lark-cli mail +draft-edit --draft-id --inspect # 打印补丁模板 lark-cli mail +draft-edit --print-patch-template # Dry Run(仅打印请求,不执行) lark-cli mail +draft-edit --draft-id --set-subject '测试' --dry-run ``` ## 通用参数 | 参数 | 必填 | 说明 | |------|------|------| | `--mailbox ` | 否 | 邮箱地址,指定草稿所属的邮箱(默认回退到 `--from`,再回退到 `me`)。优先于 `--from`。可通过 `accessible_mailboxes` 查询可用邮箱 | | `--draft-id ` | 是 | 目标草稿 ID。仅当单独使用 `--print-patch-template` 时可省略 | | `--set-subject ` | 否 | 用此值替换主题 | | `--set-to ` | 否 | 用此处提供的地址替换整个 To 收件人列表 | | `--set-cc ` | 否 | 用此处提供的地址替换整个 Cc 抄送列表 | | `--set-bcc ` | 否 | 用此处提供的地址替换整个 Bcc 密送列表 | | `--body ` | 否 | 整段替换正文(自动展开为 `set_body` op)。与 `--body-file` 互斥;与 `--patch-file` 内的 `set_body` / `set_reply_body` op 互斥 | | `--body-file ` | 否 | 从文件读取正文 HTML(相对路径,仅限 cwd 子树)。与 `--body` 互斥。文件大小上限 32 MB | | `--set-priority ` | 否 | 设置邮件优先级:`high`、`normal`、`low`。设为 `normal` 会清除已有优先级 | | `--set-event-summary ` | 否 | 设置日程标题。需同时设置 `--set-event-start` 和 `--set-event-end` | | `--set-event-start