Files
2026-09-02 11:44:52 +08:00

85 KiB
Raw Permalink Blame History

邮箱 (mail) 命令参考

命令速查目录

命令 功能简述
dws mail mailbox list 查询当前用户自己的可用邮箱列表
dws mail mailbox profile 获取用户邮箱详细信息(容量、别名等)
dws mail message list 列出指定文件夹中的邮件(默认收件箱)
dws mail message search 搜索邮件(KQL 语法,按主题/发件人/日期等)
dws mail message get 查看邮件完整内容(含正文)
dws mail message send 发送邮件(支持附件/内联图片)
dws mail message reply 回复邮件(支持附件/内联图片)
dws mail message reply-all 回复所有人(支持附件/内联图片)
dws mail message forward 转发邮件(支持附件/内联图片)
dws mail message batch-move 批量移动邮件到指定文件夹
dws mail message batch-delete 批量删除邮件
dws mail message batch-update 批量修改邮件状态(标记已读/未读/添加标签/移除标签)
dws mail message batch-get 批量获取邮件详情(最多 20 封)
dws mail message verify 根据 internetMessageId 查询邮件发送状态
dws mail sent-message recall 撤回已发送的邮件(仅支持同组织内未读邮件)
dws mail sent-message recall-detail 查询邮件撤回进度
dws mail draft create 创建草稿(保留在草稿箱,不发送)
dws mail draft update 更新草稿内容(保留在草稿箱,不发送)
dws mail draft send 发送草稿箱中已有的草稿
dws mail folder list 列举邮件文件夹
dws mail folder create 创建邮件文件夹
dws mail folder delete 删除邮件文件夹
dws mail folder update 更新邮件文件夹名称
dws mail attachment list 列举指定邮件的所有附件
dws mail attachment download 下载邮件附件到本地(仅支持逐个下载,不支持批量下载
dws mail tag list 列举邮件标签
dws mail tag create 创建邮件标签
dws mail tag delete 删除邮件标签
dws mail tag update 更新邮件标签名称
dws mail thread list 列出指定邮箱、指定文件夹下的邮件会话
dws mail thread get 获取会话详情
dws mail thread update 修改单个邮件会话的状态或标签(标记已读/未读/添加标签/移除标签)
dws mail thread batch-update 批量修改邮件会话的状态或标签(单次最多 100 个)
dws mail thread trash 将单个邮件会话移动到已删除文件夹(不会永久删除)
dws mail thread batch-trash 将多个邮件会话批量移动到已删除文件夹(单次最多 100 个,不会永久删除)
dws mail user search 搜索通讯录用户(按姓名或工号查他人邮箱,不是搜邮件)
dws mail template create 创建邮件模板
dws mail template list 列举邮件模板
dws mail template get 获取邮件模板详情
dws mail template update 更新邮件模板
dws mail template delete 删除邮件模板
dws mail contact create 创建个人邮件联系人(添加到自己的联系人列表)
dws mail contact list 列举个人邮件联系人(查看自己保存的联系人,不是搜索通讯录用户
dws mail contact update 更新个人邮件联系人信息
dws mail contact batch-delete 批量删除个人邮件联系人
dws mail auto-reply get 获取用户的自动回复配置
dws mail auto-reply update 更新/设置用户的自动回复配置
dws mail allow-list list 列出个人收信白名单
dws mail allow-list add 添加个人收信白名单
dws mail allow-list remove 移除个人收信白名单
dws mail block-list list 列出个人收信黑名单
dws mail block-list add 添加个人收信黑名单
dws mail block-list remove 移除个人收信黑名单
dws mail rule list 列出个人收信规则
dws mail rule create 创建个人收信规则
dws mail rule update 更新个人收信规则
dws mail rule delete 删除个人收信规则
dws mail rule adjust 调整收信规则排序

查找他人邮箱(如「获取严龙的邮箱」)→ 不要用 mailbox list,应走三路并发查询,详见「查找他人邮箱地址」章节。


默认邮箱选择规则(重要)

所有 mail 相关命令,除非用户明确要求使用个人邮箱,否则一律默认使用企业邮箱

适用范围: 任何需要传入 --email / --from / --sender 参数的 mail 子命令一律适用。

默认选择策略:

  1. 调用 dws mail mailbox list --format json 获取当前用户的所有邮箱。
  2. 从返回的 mailboxes优先选择企业邮箱(账号类型为企业邮箱、域名非 @dingtalk.com 的邮箱),将其作为 --email / --from 的默认值。
  3. 仅当用户在指令中明确指定「用我的个人邮箱」「用 dingtalk.com 邮箱」「用我的私人邮箱」等表述时,才选择个人邮箱(@dingtalk.com 域名)。
  4. 若用户同时拥有多个企业邮箱(如分属多家公司),优先选择与当前会话上下文匹配的企业邮箱;若仍无法判断,向用户确认后再操作。
  5. 若用户仅拥有个人邮箱(无企业邮箱),可直接使用个人邮箱,但需注意 mail user search 等仅企业邮箱可用的命令会因权限报错,需走「查找他人邮箱地址」章节的替代路径。

触发个人邮箱的关键词举例: 「我的个人邮箱」「私人邮箱」「dingtalk.com 邮箱」「@dingtalk 的邮箱」「我的 personal 邮箱」。

该规则覆盖文档后续所有命令示例:示例中虽以 user@company.com 等占位邮箱书写,实际执行时必须按上述策略动态选择企业邮箱,不要直接照抄示例中的邮箱字面量,更不要默认使用 @dingtalk.com 个人邮箱。


命令总览

查询可用邮箱地址

注意: 仅返回当前登录用户自己的邮箱列表,不能用于查找他人邮箱。查找他人邮箱请使用三路并发流程(见"查找他人邮箱地址"章节)。

Usage:
  dws mail mailbox list [flags]
Example:
  dws mail mailbox list

返回字段:

字段 类型 说明
mailboxes List[] 邮箱列表,每条包含邮箱地址、账号类型、所属企业

获取用户邮箱信息

Usage:
  dws mail mailbox profile [flags]
Example:
  dws mail mailbox profile --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

返回字段:

字段 类型 说明
email string 邮箱地址
emailAliases string[] 邮件地址别名列表
name string 用户名
nickname string 用户昵称
displayName string 用户显示名
mboxSize string 邮箱容量(字节)
mboxSizeUsed string 已使用的邮箱容量(字节)
createdTime string 创建时间
modifiedTime string 修改时间

查找他人邮箱地址(通讯录查人)

这不是 mailbox list 当需要获取某人的邮箱地址时,必须走以下三路并发查询,取最先返回有效邮箱的结果。禁止臆测邮箱地址。

触发场景: 用户说「获取/查找/得到 某人的邮箱地址」、「给某人发邮件」、「某人发给我的邮件」等任何涉及按姓名找邮箱的场景。

三路并发查询流程:

# 主路径:aisearch + contact user get
dws aisearch person --query "姓名" --dimension name --format json
# → 取 userId,再执行:
dws contact user get --ids <userId> --format json
# → 提取 orgAuthEmail 字段

# orgAuthEmail 为空时的邮箱侧补查:mail user search(仅企业邮箱可用;已知工号时可用 --employee-no 替代 --keyword
dws mail user search --email <当前邮箱> --keyword "姓名" --format json
# 或按工号查询:dws mail user search --email <当前邮箱> --employee-no "工号" --format json
# → 提取 users[].email

若两步均无有效邮箱,必须 ask_human 请用户手动提供,严禁臆测

列出文件夹中的邮件

注意: message list 用于按文件夹列出邮件;若需根据主题/发件人/日期等条件精确搜索,请使用 message search

Usage:
  dws mail message list [flags]
Example:
  dws mail message list --email user@company.com
  dws mail message list --email user@company.com --folder-id 1
  dws mail message list --email user@company.com --folder-id 2 --limit 50
  dws mail message list --email user@company.com --cursor <nextCursor>
Flags:
      --email string      邮件所属邮箱地址 (必填)
      --folder-id string  文件夹 ID1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除),默认为收件箱,别名: --folder
      --limit string      每页返回数量(最大限制 100, 默认 20),别名: --size, --page-size
      --cursor string     邮件的起始偏移标识, 其值取自响应中的nextCursor字段。""表示从头开始

返回字段:

字段 类型 说明
messages List[] 邮件列表,每条包含邮件 ID 及元信息(不含正文)
total int32 符合条件的总邮件数
nextCursor string 下一页游标,传入 --cursor 翻页;值为 $ 表示已到达列表尾部

搜索邮件 (KQL 语法)

Usage:
  dws mail message search [flags]
Example:
  dws mail message search --email user@company.com --query "subject:\"周报\"" --limit 20
  dws mail message search --email user@company.com --query "from:alice AND date>2025-06-01T00:00:00Z" --limit 10
Flags:
      --cursor string   邮件的起始偏移标识, 其值取自响应中的nextCursor字段。""表示从头开始
      --email string    搜索目标邮箱地址 (必填)
      --query string    KQL 查询表达式 (必填), 其中 date 格式需遵循 ISO8601 规范
      --limit string    每页返回数量(最大限制 100, 默认 20),别名: --size, --page-size

KQL 查询字段: date, size, tag, folderId, isRead, hasAttachments, subject, attachname, body, from, to 常用文件夹 ID: 1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除

KQL 查询字段说明

字段 类型 说明 正确示例 错误示例
date ISO8601 日期时间 邮件日期,支持 > < >= <= 比较运算符 date>2025-06-01T00:00:00Z date>2025-06-01(缺少时间部分)
size 整数(字节数) 邮件大小,支持 > < >= <= 比较运算符 size>1024 size>"1024"(值不需要引号)
tag 字符串 邮件标签 tag:important tag:""
folderId 整数 文件夹 ID(1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除) folderId:2 folderId:"收件箱"(必须用数字 ID
isRead 布尔 true/false 是否已读 isRead:false isRead:0isRead:"false"(不支持数字或字符串形式)
hasAttachments 布尔 true/false 是否有附件 hasAttachments:true hasAttachments:yes
subject 字符串 邮件主题,含空格须加双引号 subject:周报subject:"项目 进展" subject:项目 进展(含空格未加引号)
attachname 字符串 附件文件名,含空格须加双引号 attachname:report.pdfattachname:"月度 报告.xlsx" attachname:月度 报告.xlsx(含空格未加引号)
body 字符串 邮件正文内容,含空格须加双引号 body:会议纪要body:"Q1 总结" body:Q1 总结(含空格未加引号)
from 字符串(邮件地址或名称) 发件人,支持:纯邮件地址、纯名称(含空格须加双引号)、"名称<邮件地址>" 格式 from:alice@company.comfrom:"张 三"from:"alice<a@b.com>" from:张 三(含空格未加引号)
to 字符串(邮件地址或名称) 收件人,支持:纯邮件地址、纯名称(含空格须加双引号)、"名称<邮件地址>" 格式 to:bob@company.comto:"李 四"to:"alice<a@b.com>" to:李 四(含空格未加引号)

组合查询说明:

  • 支持 AND / OR / NOT 逻辑运算符(大写)
  • 括号用于分组:(from:alice OR from:bob) AND folderId:2
  • 排除特定文件夹:(NOT folderId:3) AND (NOT folderId:6)

message search 返回值说明

字段 类型 说明
messages List[] 邮件列表,每条包含邮件 ID 及元信息(不含正文)
total int32 符合条件的总邮件数
nextCursor string 下一页游标,传入 --cursor 翻页;值为 $ 表示已到达列表尾部

翻页示例:

# 第一页
dws mail message search --email user@company.com --query "folderId:2" --limit 20 --format json
# 取返回中的 nextCursor,传入下一次请求(nextCursor="$" 时停止)
dws mail message search --email user@company.com --query "folderId:2" --limit 20 --cursor <nextCursor> --format json

查看邮件完整内容

Usage:
  dws mail message get [flags]
Example:
  dws mail message get --email user@company.com --id <messageId>
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --id string      邮件 ID (必填)

返回字段:

字段 类型 说明
message object 邮件完整信息,包含主题、发件人、收件人、正文、附件等

批量获取邮件详情

Usage:
  dws mail message batch-get [flags]
Example:
  dws mail message batch-get --email user@company.com --ids <id1>,<id2>
  dws mail message batch-get --email user@company.com --ids <id1>,<id2>,<id3>
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --ids string     要获取的邮件 ID 列表,逗号分隔,最多 20 个 (必填)

单次最多获取 20 封邮件。

返回 JSON

{
  "success": true,
  "messages": [
    { "subject": "...", "from": "...", "to": [...], "body": "...", ... },
    { "subject": "...", "from": "...", "to": [...], "body": "...", ... }
  ]
}

注意: 如果某个邮件 ID 获取失败,整个命令会报错并中止。建议先通过 message searchmessage list 确认邮件 ID 有效后再批量获取。

发送邮件

Usage:
  dws mail message send [flags]
Example:
  dws mail message send --from user@company.com --to colleague@company.com \
    --subject "周报" --content "本周完成任务A和任务B"
  dws mail message send --from user@company.com --to colleague@company.com \
    --subject "周报" --content "见附件" --attachment ./report.pdf
  dws mail message send --from user@company.com --to colleague@company.com \
    --subject "周报" --content "见附件" --attachment ./a.pdf --attachment ./b.xlsx
  dws mail message send --from user@company.com --to colleague@company.com \
    --subject "图表周报" --content "图表如下:[inline:chart.png]" --inline-attachment ./chart.png
  dws mail message send --from user@company.com --to colleague@company.com \
    --subject "带图文档" --content "见附件,图表:[inline:img.png]" --attachment ./doc.pdf --inline-attachment ./img.png
Flags:
      --content string                   邮件正文 (必填),别名: --body
      --cc string                       抄送人列表
      --from string                     发件人邮箱 (必填),别名: --sender
      --subject string                  邮件标题 (必填)
      --to string                       收件人列表 (必填)
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

附件发送说明:

当指定 --attachment--inline-attachment 时,CLI 自动执行以下编排流程:

  1. 创建邮件草稿(若有内联图片,正文自动转为 HTML 并注入 <img> 标签)
  2. 为每个普通附件调用 create_upload_sessionisInline=false),从响应的 uploadUrl 字段获取完整上传地址,HTTP POST 上传文件内容
  3. 为每个内联图片调用 create_upload_sessionisInline=true,传入 contentId),从响应的 uploadUrl 字段获取完整上传地址,HTTP POST 上传文件内容
  4. 调用 send_draft 发送草稿

注意: 附件必须通过 --attachment / --inline-attachment 参数传入,严禁使用钉钉媒体存储(media upload)上传附件

内联图片说明(--inline-attachment):

  • 仅支持图片类型:jpg / jpeg / png / gif / webp / bmp / svg
  • CLI 自动生成 contentId,格式:inline-{文件名(不含扩展名)}-{序号}@alimail.com,例:inline-chart-1@alimail.com
  • --content 中使用占位符 [inline:文件名] 引用图片,CLI 自动替换为 <img src="cid:..."> 标签
  • 若 content 中没有对应占位符,内联图片会自动追加到正文末尾
  • 非图片类型(PDF、视频、音频等)请改用 --attachment

列举邮件文件夹

Usage:
  dws mail folder list [flags]
Example:
  dws mail folder list --email user@company.com
  dws mail folder list --email user@company.com --folder <folderId>
Flags:
      --email string      邮件所属邮箱地址 (必填)
      --folder string     父文件夹唯一标识,不传则返回顶层文件夹 (可选),别名: --folder-id

不传 --folder 返回顶层文件夹列表;传入则返回该文件夹的子文件夹列表。

返回字段(folders 数组):

字段 类型 说明
id string 文件夹唯一标识
displayName string 文件夹显示名称
parentFolderId string 父文件夹 ID
childFolderCount int 子文件夹数量
totalItemCount int 邮件总数
unreadItemCount int 未读邮件数量

创建邮件文件夹

Usage:
  dws mail folder create [flags]
Example:
  dws mail folder create --email user@company.com --name "项目资料"
  dws mail folder create --email user@company.com --name "子文件夹" --folder <folderId>
Flags:
      --email string    邮件所属邮箱地址 (必填)
      --name string     新建邮件文件夹名称 (必填)
      --folder string   父文件夹 ID,不传则创建顶层文件夹 (可选)

不传 --folder 创建顶层文件夹;传入 --folder 时创建指定父文件夹下的子文件夹。

重要: --folder 必须填写父文件夹 ID,不是文件夹名称。父文件夹 ID 来自 dws mail folder list --email <邮箱> 返回的 folders[].id

返回 JSON

{
  "success": true,
  "result": {
    "folder": {
      "id": "104",
      "displayName": "项目资料",
      "parentFolderId": "0",
      "childFolderCount": 0,
      "totalItemCount": 0,
      "unreadItemCount": 0,
      "extensions": {}
    }
  }
}

返回字段:

字段 类型 说明
success boolean 是否创建成功
result.folder.id string 文件夹唯一标识
result.folder.displayName string 文件夹显示名称
result.folder.parentFolderId string 父文件夹 ID
result.folder.childFolderCount number 子文件夹数量
result.folder.totalItemCount number 邮件总数
result.folder.unreadItemCount number 未读邮件数量
result.folder.extensions object 文件夹扩展信息

删除邮件文件夹

Usage:
  dws mail folder delete [flags]
Example:
  dws mail folder delete --email user@company.com --id <folderId>
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --id string      要删除的邮件文件夹 ID (必填)

--id 必须填写要删除的文件夹 ID,不是文件夹名称。文件夹 ID 来自 dws mail folder list --email <邮箱> 返回的 folders[].id,或来自 folder create 返回的 result.folder.id

返回 JSON

{
  "success": true,
  "result": {}
}

更新邮件文件夹

Usage:
  dws mail folder update [flags]
Example:
  dws mail folder update --email user@company.com --id <folderId> --name "新文件夹名"
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --id string      要更新的邮件文件夹 ID (必填)
      --name string    更新后的邮件文件夹名称 (必填)

--id 必须填写要更新的文件夹 ID,不是文件夹名称;--name 是更新后的文件夹名称。若用户只给出原文件夹名称,必须先调用 folder list 找到对应 folders[].id,再执行 update。

返回 JSON

{
  "success": true,
  "result": {}
}

列举邮件附件

重要: 不存在 attachment download_batch / download_all 等批量下载命令。如需下载多封邮件的所有附件,必须按以下流程逐个下载:1) message search 搜索邮件获取 messageId 列表 → 2) 对每封邮件 attachment list 获取 attachmentId + name → 3) 对每个附件逐个调用 attachment download

Usage:
  dws mail attachment list [flags]
Example:
  dws mail attachment list --email user@company.com --id <messageId>
Flags:
      --email string   用户邮箱地址 (必填)
      --id string      邮件唯一标识 messageId (必填)

列出指定邮件的所有附件信息。

返回字段(attachments 数组):

字段 类型 说明
id string 附件唯一标识
name string 附件文件名
contentType string 附件 MIME 类型
size int 附件大小(字节)

下载邮件附件

重要: attachment download 每次只能下载一个附件。不存在 download_batch / download_all / batch_download 等批量下载命令,不要编造不存在的命令。如需下载多封邮件的所有附件,必须循环执行:对每封邮件先 attachment list 获取附件列表,再对每个附件逐个调用 attachment download

Usage:
  dws mail attachment download [flags]
Example:
  # 先列出附件获取 id 和 name
  dws mail attachment list --email user@company.com --id <messageId>
  # 再下载指定附件到当前目录(每次只能下载一个附件)
  dws mail attachment download --email user@company.com --message-id <messageId> --attachment-id <attachmentId> --name report.pdf
  # 下载到指定目录
  dws mail attachment download --email user@company.com --message-id <messageId> --attachment-id <attachmentId> --name img.png --output /tmp
Flags:
      --email string           用户邮箱地址 (必填)
      --message-id string      邮件唯一标识 messageId (必填)
      --attachment-id string   附件唯一标识,取自 attachment list 的 id 字段 (必填)
      --name string            保存到本地的文件名,取自 attachment list 的 name 字段 (必填)
      --output string          保存目录,默认为当前目录

下载指定邮件的某个附件到本地。CLI 自动执行以下编排流程:

  1. 调用 create_download_session,从响应的 downloadUrl 字段获取完整下载地址
  2. 通过 HTTP GET 下载附件内容并保存到本地

注意: --name--attachment-id 均来自 attachment list 的返回结果,建议先执行 attachment list 再执行 attachment download

列举邮件标签

Usage:
  dws mail tag list [flags]
Example:
  dws mail tag list --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

列出指定邮箱下的所有邮件标签,返回标签的 ID 和元信息。

返回字段(tags 数组):

字段 类型 说明
id string 标签唯一标识
name string 标签显示名称
parentId string 父标签 ID
totalItemCount int 标签下邮件总数
unreadItemCount int 标签下未读邮件数量

创建邮件标签

Usage:
  dws mail tag create [flags]
Example:
  dws mail tag create --email user@company.com --name "项目资料"
  dws mail tag create --email user@company.com --name "子标签" --parent-id <tagId>
Flags:
      --email string       用户的邮箱地址 (必填)
      --name string        新建邮件标签名称 (必填)
      --parent-id string   父标签 ID,不传则创建顶层标签 (可选)

不传 --parent-id 创建顶层标签;传入 --parent-id 时创建指定父标签下的子标签。

重要: --parent-id 必须填写父标签 ID,不是标签名称。父标签 ID 来自 dws mail tag list --email <邮箱> 返回的 tags[].id

返回 JSON

{
  "success": true,
  "result": {
    "tag": {
      "id": "tag-001",
      "name": "项目资料",
      "parentId": "0",
      "totalItemCount": 0,
      "unreadItemCount": 0,
      "extensions": {}
    }
  }
}

返回字段:

字段 类型 说明
success boolean 是否创建成功
result.tag.id string 标签唯一标识
result.tag.name string 标签显示名称
result.tag.parentId string 父标签 ID
result.tag.totalItemCount number 标签下邮件总数
result.tag.unreadItemCount number 标签下未读邮件数量
result.tag.extensions object 标签扩展信息

删除邮件标签

Usage:
  dws mail tag delete [flags]
Example:
  dws mail tag delete --email user@company.com --id <tagId>
Flags:
      --email string   用户的邮箱地址 (必填)
      --id string      要删除的邮件标签 ID (必填)

--id 必须填写要删除的标签 ID,不是标签名称。标签 ID 来自 dws mail tag list --email <邮箱> 返回的 tags[].id,或来自 tag create 返回的 result.tag.id

只能删除用户自定义标签,系统标签不能删除。

返回 JSON

{
  "success": true,
  "result": {}
}

更新邮件标签

Usage:
  dws mail tag update [flags]
Example:
  dws mail tag update --email user@company.com --id <tagId> --name "新标签名"
Flags:
      --email string   用户的邮箱地址 (必填)
      --id string      要更新的邮件标签 ID (必填)
      --name string    更新后的邮件标签名称 (必填)

--id 必须填写要更新的标签 ID,不是标签名称;--name 是更新后的标签名称。若用户只给出原标签名称,必须先调用 tag list 找到对应 tags[].id,再执行 update。

只能更新用户自定义标签,系统标签不能更新。

返回 JSON

{
  "success": true,
  "result": {}
}

列出邮件会话

Usage:
  dws mail thread list [flags]
Example:
  dws mail thread list --email user@company.com --folder <folderId> --limit 10
  dws mail thread list --email user@company.com --folder 104 --limit 20 --cursor <nextCursor>
Flags:
      --email string       会话所属邮箱地址 (必填)
      --folder string      邮件文件夹 ID,不是文件夹名称 (必填)
      --limit int          本次列出的会话数,最大 100 (必填)
      --cursor string      分页游标,首次请求可不传 (可选)
      --start string       开始 UTC 时间字符串,如 2024-01-01T00:00:00Z (可选)
      --end string         结束 UTC 时间字符串,如 2024-12-31T23:59:59Z (可选)
      --ascending          是否按时间升序;不传由服务端默认排序 (可选)

--folder 必须填写文件夹 ID,不是文件夹名称。若用户只给出“收件箱/已删除/某个自定义文件夹”这类名称,必须先调用 folder list 找到对应 folders[].id,再执行 thread list

返回 JSON

{
  "success": true,
  "result": {
    "conversations": [
      {
        "id": "conversationId",
        "subject": "会话主题",
        "summary": "会话摘要",
        "lastModifiedDateTime": "2024-02-06T01:05:07Z",
        "messageCount": 1,
        "tags": [],
        "senders": [
          {
            "email": "sender@example.com",
            "name": "发件人"
          }
        ],
        "isRead": true,
        "priority": "PRY_NORMAL",
        "flag": "FLAG_NONE",
        "hasAttachments": false
      }
    ],
    "nextCursor": "",
    "hasMore": false
  }
}

获取会话详情

Usage:
  dws mail thread get [flags]
Example:
  dws mail thread get --email user@company.com --id <conversationId>
Flags:
      --email string   会话所属邮箱地址 (必填)
      --id string      会话唯一标识 conversationId (必填)

返回字段(conversation 对象):

字段 类型 说明
id string 会话唯一标识
subject string 会话主题
summary string 会话摘要信息
lastModifiedDateTime string (date-time) 会话最后修改时间
messageCount int32 会话邮件数量
tags array[string] 会话 tag 信息
senders List[{email, name}] 会话发件人列表
isRead boolean 会话是否已读(全部已读/未读)
priority string 会话重要性,取会话内邮件最高优先级(PRY_HIGH / PRY_NORMAL
flag string 会话标识,取会话内最近邮件的标识(FLAG_NONE / FLAG_REPLY / FLAG_FORWARD
hasAttachments boolean 会话是否包含附件(不含 inline 资源)

修改邮件会话状态

Usage:
  dws mail thread update [flags]
Example:
  dws mail thread update --email user@company.com --id <conversationId> --action markRead
  dws mail thread update --email user@company.com --id <conversationId> --action addTags --tag-ids 1,2
Flags:
      --email string     会话所属邮箱地址 (必填)
      --id string        会话唯一标识 conversationId (必填)
      --action string    操作类型:markRead、markUnread、addTags、removeTags (必填)
      --tag-ids string   标签 ID 列表,多个用英文逗号分隔;addTags/removeTags 时必填 (可选)

--id 必须填写会话 ID,不是邮件 ID。会话 ID 可通过 thread listconversations[].id 获取。

支持的 --action

action 说明 是否需要 --tag-ids
markRead 标记会话为已读
markUnread 标记会话为未读
addTags 给会话增加标签
removeTags 从会话移除标签

常用标签 ID

标签 ID 名称 图标
1 跟进事项 小红旗
2 完成事项 绿色小勾
11 重要 星标

成功时返回:

{
  "success": true,
  "result": {}
}

批量修改邮件会话状态

Usage:
  dws mail thread batch-update [flags]
Example:
  dws mail thread batch-update --email user@company.com --ids <conversationId1>,<conversationId2> --action markUnread
  dws mail thread batch-update --email user@company.com --ids <conversationId1>,<conversationId2> --action removeTags --tag-ids 11
Flags:
      --email string     会话所属邮箱地址 (必填)
      --ids string       会话 ID 列表,多个用英文逗号分隔,最多 100 个 (必填)
      --action string    操作类型:markRead、markUnread、addTags、removeTags (必填)
      --tag-ids string   标签 ID 列表,多个用英文逗号分隔;addTags/removeTags 时必填 (可选)

--ids 必须填写会话 ID 列表,不是邮件 ID 列表,最多 100 个。

成功时返回:

{
  "success": true,
  "result": {}
}

[危险] 删除邮件会话

Usage:
  dws mail thread trash [flags]
Example:
  dws mail thread trash --email user@company.com --id <conversationId> --yes
Flags:
      --email string   会话所属邮箱地址 (必填)
      --id string      要删除的会话 ID (必填)
      --yes            跳过确认提示,直接执行 (可选)

⚠️ 危险操作:此命令会将邮件会话移动到已删除文件夹。建议先通过 thread get 确认目标会话后再执行。

将指定邮件会话移动到已删除文件夹,不会永久删除邮件。--id 必须填写会话 ID,不是邮件 ID。默认需要用户确认,传入 --yes 可跳过确认。

成功时返回:

{
  "success": true,
  "result": {}
}

[危险] 批量删除邮件会话

Usage:
  dws mail thread batch-trash [flags]
Example:
  dws mail thread batch-trash --email user@company.com --ids <conversationId1>,<conversationId2> --yes
Flags:
      --email string   会话所属邮箱地址 (必填)
      --ids string     要删除的会话 ID 列表,多个用英文逗号分隔,最多 100 个 (必填)
      --yes            跳过确认提示,直接执行 (可选)

⚠️ 危险操作:此命令会批量将邮件会话移动到已删除文件夹。建议先通过 thread list 确认目标会话后再执行。

将指定邮件会话批量移动到已删除文件夹,单次最多 100 个会话。不会永久删除邮件。--ids 必须填写会话 ID 列表,不是邮件 ID 列表。默认需要用户确认,传入 --yes 可跳过确认。

成功时返回:

{
  "success": true,
  "result": {}
}

回复邮件

Usage:
  dws mail message reply [flags]
Example:
  dws mail message reply --from user@company.com --id <messageId>
  dws mail message reply --from user@company.com --id <messageId> --subject "Re: 周报" --content "已收到,谢谢!"
Flags:
      --from string                     发件人邮箱 (必填),别名: --sender
      --to string                       收件人列表(可选)
      --id string                       要回复的邮件 ID (必填)
      --subject string                  回复邮件标题(可选)
      --content string                  回复正文(可选),别名: --body
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

附件发送说明:

当指定 --attachment--inline-attachment 时,CLI 自动执行以下编排流程:

  1. 调用 create_reply_draft 创建回复草稿(若有内联图片,正文自动转为 HTML 并注入 <img> 标签)
  2. 为每个普通附件创建上传会话并上传(isInline=false
  3. 为每个内联图片创建上传会话并上传(isInline=true,传入自动生成的 contentId
  4. 发送草稿

返回字段:

字段 类型 说明
messageId string 新生成的回复邮件 ID

回复所有人

Usage:
  dws mail message reply-all [flags]
Example:
  dws mail message reply-all --from user@company.com --id <messageId>
  dws mail message reply-all --from user@company.com --id <messageId> --subject "Re: 周报" --content "感谢大家的参与!"
Flags:
      --from string                     发件人邮箱 (必填),别名: --sender
      --to string                       收件人列表(可选,包含发件人及所有原始收件人)
      --id string                       要回复的邮件 ID (必填)
      --subject string                  回复邮件标题(可选)
      --content string                  回复正文(可选),别名: --body
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

附件发送说明:

当指定 --attachment--inline-attachment 时,CLI 自动执行以下编排流程:

  1. 调用 create_replyall_draft 创建回复全部草稿(若有内联图片,正文自动转为 HTML 并注入 <img> 标签)
  2. 为每个普通附件创建上传会话并上传(isInline=false
  3. 为每个内联图片创建上传会话并上传(isInline=true,传入自动生成的 contentId
  4. 发送草稿

返回字段:

字段 类型 说明
messageId string 新生成的回复邮件 ID

转发邮件

Usage:
  dws mail message forward [flags]
Example:
  dws mail message forward --from user@company.com --id <messageId>
  dws mail message forward --from user@company.com --to colleague@company.com --id <messageId> --subject "Fwd: 周报"
Flags:
      --from string                     发件人邮箱 (必填),别名: --sender
      --to string                       转发收件人列表(可选)
      --id string                       要转发的邮件 ID (必填)
      --subject string                  转发邮件标题(可选)
      --content string                  转发附言(可选),别名: --body
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

附件发送说明:

当指定 --attachment--inline-attachment 时,CLI 自动执行以下编排流程:

  1. 调用 create_forward_draft 创建转发草稿(若有内联图片,正文自动转为 HTML 并注入 <img> 标签)
  2. 为每个普通附件创建上传会话并上传(isInline=false
  3. 为每个内联图片创建上传会话并上传(isInline=true,传入自动生成的 contentId
  4. 发送草稿

返回字段:

字段 类型 说明
messageId string 新生成的转发邮件 ID

批量移动邮件到指定文件夹

Usage:
  dws mail message batch-move [flags]
Example:
  dws mail message batch-move --email user@company.com --ids <id1>,<id2> --folder 6
Flags:
      --email string    邮件所属邮箱地址 (必填)
      --ids string      要移动的邮件 ID 列表,逗号分隔 (必填)
      --folder string   目标文件夹 ID (必填)

常用文件夹 ID: 1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除

批量删除邮件

Usage:
  dws mail message batch-delete [flags]
Example:
  dws mail message batch-delete --email user@company.com --ids <id1>,<id2>
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --ids string     要删除的邮件 ID 列表,逗号分隔 (必填)

批量修改邮件状态

批量修改邮件的已读状态或标签,通过 --action 指定操作类型。

支持的操作类型(--action):

action 说明 需要的额外参数
markRead 标记邮件为已读
markUnread 标记邮件为未读
addTags 给邮件增加标签 --tags(标签 ID 列表,必填)
removeTags 从邮件移除标签 --tags(标签 ID 列表,必填)

常用标签 ID

标签 ID 名称 图标
1 跟进事项 小红旗
2 完成事项 绿色小勾
11 重要 星标
Usage:
  dws mail message batch-update [flags]
Example:
  dws mail message batch-update --email user@company.com --ids <id1>,<id2> --action markRead
  dws mail message batch-update --email user@company.com --ids <id1>,<id2> --action addTags --tags 1,2
  dws mail message batch-update --email user@company.com --ids <id1>,<id2> --action removeTags --tags 11
Flags:
      --email string   邮件所属邮箱地址 (必填)
      --ids string     要修改的邮件 ID 列表,逗号分隔 (必填)
      --action string  操作类型: markRead/markUnread/addTags/removeTags (必填)
      --tags string    标签 ID 列表,逗号分隔 (action 为 addTags/removeTags 时必填)

查询标签 ID 使用 dws mail tag list --email <邮箱> 可查看所有可用标签及其 ID。

查询邮件发送状态

Usage:
  dws mail message verify [flags]
Example:
  dws mail message verify --email user@company.com --internet-message-id <internetMessageId>
Flags:
      --email string                邮件所属邮箱地址 (必填)
      --internet-message-id string  邮件的 internetMessageId (必填),取自发送类命令返回值

根据 internetMessageId 查询某封邮件当前的发送投递状态。

internetMessageId 来源: message send / draft send / message reply / message reply-all / message forward 等发送类命令的返回值中均会带 internetMessageId 字段,可直接传入此命令查询发送结果。

返回字段:

字段 类型 说明
message object 邮件完整信息
sendStatus string 发送状态,取值见下表

sendStatus 取值说明:

含义
none 未发送
posting 投递中
partial_success 部分成功(部分收件人投递成功)
success 发送成功
failed 发送失败
unknown 未知状态

[危险] 撤回已发送的邮件

Usage:
  dws mail sent-message recall [flags]
Example:
  dws mail sent-message recall --email user@company.com --id <mailId> --subject "邮件主题" --yes
Flags:
      --email string    发件人邮箱地址 (必填)
      --id string       要撤回的邮件 ID (必填)
      --subject string  邮件主题 (必填)
      --yes             跳过确认提示,直接执行 (可选)

⚠️ 危险操作:此命令会撤回已发送的邮件。仅支持撤回同组织内未读邮件。

返回字段:

字段 类型 说明
id string 撤回任务 ID(可用于 recall-detail 查询进度)
success boolean 接口调用是否成功
errorCode string 错误码(仅失败时存在)
errorMsg string 错误信息(仅失败时存在)

查询邮件撤回进度

Usage:
  dws mail sent-message recall-detail [flags]
Example:
  dws mail sent-message recall-detail --email user@company.com --id <recallTaskId>
Flags:
      --email string   用户的邮箱地址 (必填)
      --id string      撤回任务 ID (必填),由 recall 命令返回

根据撤回任务 ID 查询邮件撤回的详细进度。撤回任务 ID 来源:sent-message recall 命令返回值中的 id 字段。

返回字段:

字段 类型 说明
success boolean 调用是否成功
id string 任务 ID
status string 任务状态(见下方枚举)
errorCode string 错误码(仅失败时存在)
errorMsg string 错误信息(仅失败时存在)

任务状态枚举:

状态值 说明
UNINITED 未初始化
SUBMITTED 已提交
RUNNING 执行中
FINISHED 已完成
CANCELED 已取消
FAILED 失败

创建草稿

Usage:
  dws mail draft create [flags]
Example:
  dws mail draft create --from user@company.com --to colleague@company.com \
    --subject "草稿标题" --content "草稿正文"
  dws mail draft create --from user@company.com --subject "草稿标题"
  dws mail draft create --from user@company.com --subject "带附件草稿" \
    --content "见附件" --attachment ./report.pdf
  dws mail draft create --from user@company.com --subject "带图片草稿" \
    --content "图表:[inline:chart.png]" --inline-attachment ./chart.png
Flags:
      --from string                     发件人邮箱 (必填),别名: --sender
      --subject string                  邮件标题 (必填)
      --to string                       收件人列表(可选,有确定收件人时才传)
      --cc string                       抄送人列表(可选,有确定抄送人时才传)
      --content string                  邮件正文(可选,有正文内容时才传),别名: --body
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

注意: --to--cc--content 均为可选参数,仅在用户明确提供对应信息时才传入。若用户未指定收件人,不要传 --to ""(空字符串)。

附件说明:

指定 --attachment--inline-attachment 时,CLI 自动完成草稿创建和附件上传,草稿保留在草稿箱,不会发送。内联图片用法同 message send--content 中使用 [inline:文件名] 占位符)。

返回字段:

字段 类型 说明
messageId string 新建草稿的邮件 ID

更新草稿

Usage:
  dws mail draft update [flags]
Example:
  dws mail draft update --from user@company.com --id <messageId> --subject "新标题" --content "新正文"
  dws mail draft update --from user@company.com --id <messageId> --content "见附件" --attachment ./report.pdf
  dws mail draft update --from user@company.com --id <messageId> \
    --content "图表:[inline:chart.png]" --inline-attachment ./chart.png
Flags:
      --from string                     发件人邮箱 (必填),别名: --sender
      --id string                       草稿邮件 ID (必填)
      --to string                       收件人列表(可选)
      --cc string                       抄送人列表(可选)
      --subject string                  邮件标题(可选)
      --content string                  邮件正文(可选),别名: --body
      --attachment stringArray          附件文件路径,可多次指定 (可选)
      --inline-attachment stringArray   内联图片路径,可多次指定,cid 自动生成 (可选)

附件说明:

指定 --attachment--inline-attachment 时,CLI 自动完成草稿更新和附件上传,草稿保留在草稿箱,不会发送。内联图片用法同 message send--content 中使用 [inline:文件名] 占位符)。

发送草稿

Usage:
  dws mail draft send [flags]
Example:
  dws mail draft send --from user@company.com --id <messageId>
Flags:
      --from string   发件人邮箱 (必填),别名: --sender
      --id string     草稿邮件 ID (必填)

将草稿箱中已有的草稿发送出去。草稿 ID 来自 draft createmessage searchfolderId:5)的返回结果。

搜索邮箱用户(通讯录)

Usage:
  dws mail user search [flags]
Example:
  dws mail user search --keyword "张三"
  dws mail user search --email user@company.com --keyword "张三"
  dws mail user search --email user@company.com --keyword "alice" --limit 10
  dws mail user search --email user@company.com --keyword "alice" --cursor <nextCursor>
  dws mail user search --email user@company.com --employee-no "E123456"
Flags:
      --email string        搜索目标邮箱地址 (可选)
      --keyword string      搜索关键词(未提供 --employee-no 时为必填)
      --employee-no string  按工号搜索用户;提供此参数时 keyword 不再必填
      --cursor string       分页游标,取自响应中的 nextCursor 字段(可选)
      --limit string        每页返回数量(可选),别名: --size

重要区别(三个容易混淆的命令):

  • mail user search — 搜索企业通讯录用户(按姓名/关键词或工号找人),用于获取某人的邮箱地址。需要企业邮箱权限。
  • mail contact list — 列举个人联系人(用户自己保存/创建的联系人列表),不需要关键词,返回自己的联系人。
  • mail message search — 搜索邮件内容(按 KQL 语法搜邮件,如主题、发件人、日期等)

不要混淆:查找"某人的邮箱地址"用 user search;查看"自己保存的联系人"用 contact list;查找"某封邮件"用 message search

仅企业邮箱(非 @dingtalk.com 个人邮箱)可使用 user search;使用个人邮箱调用将因无权限而报错。

--keyword--employee-no 至少需要提供一个;当提供 --employee-no 时,--keyword 不再是必填字段。

返回字段:

字段 类型 说明
users List[] 匹配的用户列表,每条包含用户 ID、邮箱地址、姓名、昵称、工号、职位、工作地
nextCursor string 下一页游标,传入 --cursor 翻页
hasMore boolean 是否还有更多数据

user 对象字段:

字段 类型 说明
id string 用户 ID
email string 展示使用的邮件地址
name string 用户名(人名)
nickname string 用户昵称(或者花名)
employeeNo string 工号
jobTitle string 职位
workLocation string 工作地

创建邮件模板

Usage:
  dws mail template create [flags]
Example:
  dws mail template create --email user@company.com --name "周报模板" --subject "周报" --content "本周工作总结..."
  dws mail template create --email user@company.com --from user@company.com --name "通知模板" --subject "通知" --content "..." --to a@x.com,b@x.com --cc c@x.com
Flags:
      --email string      用户邮箱地址 (必填)
      --from string       模板发件人邮箱 (可选)
      --subject string    模板邮件标题 (必填)
      --content string    模板邮件正文 (必填),别名: --body
      --name string       模板名称 (必填)
      --to string         模板收件人列表,逗号分隔 (可选)
      --cc string         模板抄送人列表,逗号分隔 (可选)
      --is-draft          是否为草稿模板 (可选,默认 false)

草稿模板说明: 传入 --is-draft 创建的模板为草稿模板,草稿模板支持后续通过 template update 修改内容。非草稿模板创建后不可修改template update 仅对草稿模板有效)。

列举邮件模板

Usage:
  dws mail template list [flags]
Example:
  dws mail template list --email user@company.com --limit 20
  dws mail template list --email user@company.com --limit 20 --cursor <nextCursor>
Flags:
      --email string    用户邮箱地址 (必填)
      --cursor string   分页游标,取自响应中的 nextCursor 字段 (可选)
      --limit string    每页返回数量 (必填),别名: --size

获取邮件模板详情

Usage:
  dws mail template get [flags]
Example:
  dws mail template get --email user@company.com --id <templateId>
Flags:
      --email string   用户邮箱地址 (必填)
      --id string      模板唯一标识 (必填)

更新邮件模板

重要限制: template update 仅对草稿模板有效。只有通过 template create --is-draft 创建的草稿模板才支持更新,非草稿模板调用 update 会返回 Invalid parameter 错误。

Usage:
  dws mail template update [flags]
Example:
  dws mail template update --email user@company.com --id <templateId> --subject "新标题" --content "新正文"
  dws mail template update --email user@company.com --id <templateId> --name "新模板名"
Flags:
      --email string      用户邮箱地址 (必填)
      --id string         模板唯一标识 (必填,必须是草稿模板的 ID)
      --from string       模板发件人邮箱 (可选)
      --subject string    模板邮件标题 (可选)
      --content string    模板邮件正文 (可选),别名: --body
      --name string       模板名称 (可选)
      --to string         模板收件人列表,逗号分隔 (可选)
      --cc string         模板抄送人列表,逗号分隔 (可选)

删除邮件模板

Usage:
  dws mail template delete [flags]
Example:
  dws mail template delete --email user@company.com --id <templateId>
Flags:
      --email string   用户邮箱地址 (必填)
      --id string      模板唯一标识 (必填)

特殊字符注意: --contact-id 等 ID 参数的值可能包含 $! 等 shell 特殊字符。在终端手动执行时,必须用单引号包裹这类参数值(如 --contact-id '101_0:DzzzzyJqO10$---.hp5uBuR'),双引号会导致 $ 被 shell 变量展开,使 ID 值被篡改从而报错。通过 MCP 协议(JSON 传参)调用时无此问题。

创建邮件联系人

Usage:
  dws mail contact create [flags]
Example:
  dws mail contact create --email user@company.com --contact-email colleague@company.com --display-name "张三"
  dws mail contact create --email user@company.com --contact-email colleague@company.com --first-name "三" --last-name "张"
Flags:
      --email string          用户邮箱地址 (必填)
      --contact-email string  联系人邮箱地址 (必填)
      --first-name string     联系人名 (可选)
      --middle-name string    联系人中间名 (可选)
      --last-name string      联系人姓 (可选)
      --display-name string   联系人显示名称 (可选)

列举邮件联系人

Usage:
  dws mail contact list [flags]
Example:
  dws mail contact list --email user@company.com --limit 20
  dws mail contact list --email user@company.com --limit 20 --cursor <nextCursor>
Flags:
      --email string    用户邮箱地址 (必填)
      --cursor string   分页游标,取自响应中的 nextCursor 字段 (可选)
      --limit string    每页返回数量 (必填),别名: --size

更新邮件联系人

Usage:
  dws mail contact update [flags]
Example:
  dws mail contact update --email user@company.com --contact-id <contactId> --display-name "李四"
  dws mail contact update --email user@company.com --contact-id <contactId> --contact-email new@company.com --first-name "四" --last-name "李"
Flags:
      --email string          用户邮箱地址 (必填)
      --contact-id string     联系人唯一标识 (必填)
      --contact-email string  联系人邮箱地址 (可选)
      --first-name string     联系人名 (可选)
      --middle-name string    联系人中间名 (可选)
      --last-name string      联系人姓 (可选)
      --display-name string   联系人显示名称 (可选)

批量删除邮件联系人

特殊字符注意: --contact-ids 的值可能包含 $! 等 shell 特殊字符。在终端手动执行时,必须用单引号包裹这类参数值(如 --contact-ids '101_0:DzzzzyJqO10$---.hp5uBuR'),双引号会导致 $ 被 shell 变量展开,使 ID 值被篡改从而报错。通过 MCP 协议(JSON 传参)调用时无此问题。

Usage:
  dws mail contact batch-delete [flags]
Example:
  dws mail contact batch-delete --email user@company.com --contact-ids <id1>,<id2>
Flags:
      --email string         用户邮箱地址 (必填)
      --contact-ids string   要删除的联系人 ID 列表,逗号分隔 (必填)

获取自动回复配置

获取当前用户的邮件自动回复配置,包括是否启用、生效时间、回复范围和回复内容。

Usage:
  dws mail auto-reply get [flags]
Example:
  dws mail auto-reply get --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

返回字段:

字段 类型 说明
enabled bool 是否启用自动回复 (true=启用, false=禁用)
startTime string 自动回复开始时间
endTime string 自动回复结束时间
scope string 回复范围: "contact"(仅联系人) 或 "all"(所有人)
content string 自动回复内容

更新自动回复配置

更新或设置用户的邮件自动回复配置。所有参数均为必填。建议先通过 auto-reply get 获取当前配置,再传入需要修改的字段值。

Usage:
  dws mail auto-reply update [flags]
Example:
  dws mail auto-reply update --email user@company.com --enabled true \
    --start "2026/07/01 09:00:00 +0800" --end "2026/07/07 18:00:00 +0800" \
    --scope all --content "出差中,请稍后联系"
  dws mail auto-reply update --email user@company.com --enabled false \
    --start "2026/07/01 09:00:00 +0800" --end "2026/07/07 18:00:00 +0800" \
    --scope all --content "已关闭自动回复"
Flags:
      --email string       用户的邮箱地址 (必填)
      --enabled string     是否启用自动回复: true/false (必填)
      --start string       自动回复开始时间,格式: YYYY/MM/DD HH:MM:SS +ZZZZ (必填)
      --end string         自动回复结束时间,格式: YYYY/MM/DD HH:MM:SS +ZZZZ (必填)
      --scope string       回复范围: contact(仅联系人)/all(所有人) (必填)
      --content string     自动回复内容 (必填)

返回字段:

字段 类型 说明
success boolean 更新是否成功
result object 更新结果,成功时为空对象
errorCode string 错误码(仅失败时存在)
errorMsg string 错误信息(仅失败时存在)

个人收信白名单管理

列出白名单

Usage:
  dws mail allow-list list [flags]
Example:
  dws mail allow-list list --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

返回字段:

字段 类型 说明
total number 白名单总数
entries string[] 白名单地址列表(邮件地址如 123@domain.com,域名如 @domain.com,域名前需加 @
success boolean 调用是否成功
errorCode string 错误码(仅失败时存在)
errorMsg string 错误信息(仅失败时存在)

添加白名单

Usage:
  dws mail allow-list add [flags]
Example:
  dws mail allow-list add --email user@company.com --entries a@b.com,@spam.com
Flags:
      --email string    用户的邮箱地址 (必填)
      --entries string  逗号分隔的地址列表,支持邮件地址(如123@domain.com)或域名(如@domain.com)

移除白名单

Usage:
  dws mail allow-list remove [flags]
Example:
  dws mail allow-list remove --email user@company.com --entries a@b.com,@spam.com
Flags:
      --email string    用户的邮箱地址 (必填)
      --entries string  逗号分隔的地址列表,支持邮件地址(如123@domain.com)或域名(如@domain.com)

个人收信黑名单管理

列出黑名单

Usage:
  dws mail block-list list [flags]
Example:
  dws mail block-list list --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

返回字段:

字段 类型 说明
total number 黑名单总数
entries string[] 黑名单地址列表(邮件地址如 123@domain.com,域名如 @domain.com,域名前需加 @
success boolean 调用是否成功
errorCode string 错误码(仅失败时存在)
errorMsg string 错误信息(仅失败时存在)

添加黑名单

Usage:
  dws mail block-list add [flags]
Example:
  dws mail block-list add --email user@company.com --entries spam@bad.com,@junk.com
Flags:
      --email string    用户的邮箱地址 (必填)
      --entries string  逗号分隔的地址列表,支持邮件地址(如123@domain.com)或域名(如@domain.com)

移除黑名单

Usage:
  dws mail block-list remove [flags]
Example:
  dws mail block-list remove --email user@company.com --entries spam@bad.com,@junk.com
Flags:
      --email string    用户的邮箱地址 (必填)
      --entries string  逗号分隔的地址列表,支持邮件地址(如123@domain.com)或域名(如@domain.com)

收信规则管理

列出收信规则

列出当前用户的所有收信规则,包括规则名称、启用状态、条件、动作和排序。

Usage:
  dws mail rule list [flags]
Example:
  dws mail rule list --email user@company.com
Flags:
      --email string   用户的邮箱地址 (必填)

返回字段:

字段 类型 说明
total int 规则总数
rules List[] 规则列表
rules[].id string 规则 ID
rules[].name string 规则名称
rules[].enabled bool 是否启用
rules[].conditions List[] 规则条件列表
rules[].actions List[] 规则动作列表
rules[].order int 规则排序

创建收信规则

创建一条新的收信规则。支持设置规则名称、启用状态、匹配条件和执行动作。

--conditions--actions 为 JSON 数组字符串。

界面与参数对应关系:

界面元素 CLI 参数 / JSON 字段 说明
规则名称 --name 必填,规则的显示名称
如果满足以下「全部」条件 --conditions 多个条件之间为 AND 关系(即所有条件都满足才触发)
├ 对象下拉(发件人) object: "from" 条件匹配的对象,可选值见下方
├ 操作下拉(包含) operation: "include" 匹配方式,可选值见下方
└ 关键词输入框 keyword: "a@test.com" 匹配的具体值
执行以下操作 --actions 条件满足后执行的动作列表
├ 动作下拉(移动到文件夹) action: "ActSavetoFolder" 动作类型,可选值见下方
└ 参数选择(收件箱) parameters: ["2"] 动作的参数,如目标文件夹 ID

条件逻辑说明:

  • --conditions 数组中的多个条件之间为 AND(且) 关系,即所有条件都满足才触发规则
  • 同一个条件对象(如 from)内部的 or 数组中多个表达式之间为 OR(或) 关系
  • 同一个 and 数组中的多个子条件之间为 AND(且) 关系

条件对象 (object) 与合法操作类型 (operation) 组合:

object 合法 operation 说明
from include(包含), exclude(不包含), oneof(是联系人之一), noneof(不是联系人之一) 匹配发件人地址或名称
to include(包含), exclude(不包含), oneof(是联系人之一), noneof(不是联系人之一) 匹配收件人地址或名称
subject include(包含), exclude(不包含) 匹配邮件主题
attachment exist(是否存在附件) keyword="1" 表示有附件,keyword="0" 表示无附件
x-aliyun-size greater(大于), less(小于) 邮件大小,单位为 字节(Bytes)1KB=1024, 1MB=1048576);可组合使用表示范围区间

操作类型 (operation) 详细说明:

界面显示 适用 object 说明
include 包含 from, to, subject 字段包含关键词
exclude 不包含 from, to, subject 字段不包含关键词
oneof 是联系人之一 from, to 字段值在给定联系人列表中
noneof 不是联系人之一 from, to 字段值不在给定联系人列表中
greater 大于 x-aliyun-size 数值大于阈值,单位字节(Bytes)
less 小于 x-aliyun-size 数值小于阈值,单位字节(Bytes)
exist 存在 attachment keyword="1" 表示有附件,keyword="0" 表示无附件

动作类型 (action) 可选值:

界面显示 parameters 说明 前置依赖
ActSavetoFolder 移动到文件夹 目标文件夹 ID,如 ["2"]2=收件箱) 需先通过 dws mail folder list 获取文件夹 ID
ActFlagMail 标记标签 标签 ID 列表,逗号分隔,如 ["102,11,1"] 需先通过 dws mail tag list 获取标签 ID
ActFlagMail2 标记已读 "asread"(标记已读),服务端仅支持标记已读,不支持标记未读
ActReply 自动回复 回复内容文本,如 ["感谢您的来信"]

条件 JSON 结构说明:

每个条件由 object(匹配对象)和 orOR 表达式列表)组成,or 内嵌 andAND 条件列表)。

字段 说明
object 条件对象,取值及合法 operation 见上方组合表
or OR 表达式列表,同一 object 下多个 or 项之间为 OR 关系
and AND 条件列表,同一 or 项内多个 and 子条件之间为 AND 关系
operation 操作类型,必须与 object 合法组合(见上方组合表)
keyword 关键词/阈值;attachment+exist 时 "1"=有附件/"0"=无附件;x-aliyun-size 时单位为字节(Bytes),如 1KB=1024, 1MB=1048576
ignoreCase 是否忽略大小写(布尔值,仅 from/to/subject + include/exclude 时需要)

完整 conditions JSON 示例:

[
  {"object":"from","or":[
    {"and":[{"operation":"oneof","keyword":"a@test.com","ignoreCase":true}]},
    {"and":[{"operation":"oneof","keyword":"b@test.com","ignoreCase":true}]}
  ]},
  {"object":"subject","or":[{"and":[{"operation":"include","keyword":"报告","ignoreCase":true}]}]},
  {"object":"attachment","or":[{"and":[{"operation":"exist","keyword":"1"}]}]},
  {"object":"x-aliyun-size","or":[{"and":[{"operation":"greater","keyword":"1024"},{"operation":"less","keyword":"10240"}]}]}
]

上例表示:发件人是 a@test.com b@test.com 主题包含"报告" 有附件 大小在 1KB(1024字节)~10KB(10240字节) 之间。

同一 object 下匹配多个值的 OR 写法:or 数组中放多个 and 项(每个 and 对应一个匹配值),而非在一个 and 中放多个条件。例如上方 from 条件中,两个邮箱地址分别作为独立的 and 项放在 or 数组中,表示"满足任一即可"。

完整 actions JSON 示例:

[
  {"action":"ActSavetoFolder","parameters":["2"]},
  {"action":"ActFlagMail","parameters":["102,11,1"]},
  {"action":"ActFlagMail2","parameters":["asread"]},
  {"action":"ActReply","parameters":["感谢您的来信,我将尽快回复"]}
]

注意: 使用 ActSavetoFolder 前需先通过 dws mail folder list 获取文件夹 ID;使用 ActFlagMail 前需先通过 dws mail tag list 获取标签 ID。

Usage:
  dws mail rule create [flags]
Example:
  dws mail rule create --email user@company.com --name "VIP邮件标记" --enabled true \
    --conditions '[{"object":"from","or":[{"and":[{"operation":"include","keyword":"vip@company.com","ignoreCase":true}]}]}]' \
    --actions '[{"action":"ActFlagMail2","parameters":["asread"]}]'
  dws mail rule create --email user@company.com --name "大附件归档" \
    --conditions '[{"object":"x-aliyun-size","or":[{"and":[{"operation":"greater","keyword":"10485760"}]}]}]' \
    --actions '[{"action":"ActSavetoFolder","parameters":["6"]}]'
Flags:
      --email string       用户的邮箱地址 (必填)
      --name string        规则名称 (必填)
      --enabled string     是否启用: true/false (必填)
      --conditions string  规则条件 JSON 数组 (可选)
      --actions string     规则动作 JSON 数组 (必填)

返回字段:

字段 类型 说明
success bool 创建是否成功
errorCode string 错误码
errorMsg string 错误消息
id string 新建规则 ID

更新收信规则

更新已有的收信规则。--conditions 外所有参数均为必填

建议工作流: 先通过 dws mail rule list 获取当前规则的完整配置,再传入需要修改的字段值。

--conditions 为空或不传表示命中所有邮件(无条件匹配)。--actions 格式同 create 命令。

Usage:
  dws mail rule update [flags]
Example:
  dws mail rule update --email user@company.com --id <ruleId> --name "新规则名" --enabled true \
    --actions '[{"action":"ActSavetoFolder","parameters":["6"]}]'
  dws mail rule update --email user@company.com --id <ruleId> --name "全量归档" --enabled false \
    --conditions '[{"object":"subject","or":[{"and":[{"operation":"include","keyword":"报告","ignoreCase":true}]}]}]' \
    --actions '[{"action":"ActSavetoFolder","parameters":["6"]}]'
Flags:
      --email string       用户的邮箱地址 (必填)
      --id string          规则 ID (必填)
      --name string        规则名称 (必填)
      --enabled string     是否启用: true/false (必填)
      --conditions string  规则条件 JSON 数组 (可选,为空表示命中所有邮件)
      --actions string     规则动作 JSON 数组 (必填)

返回字段:

字段 类型 说明
success bool 更新是否成功
errorCode string 错误码
errorMsg string 错误信息
result object 更新结果

删除收信规则

删除指定的收信规则。

Usage:
  dws mail rule delete [flags]
Example:
  dws mail rule delete --email user@company.com --id <ruleId>
Flags:
      --email string   用户的邮箱地址 (必填)
      --id string      规则 ID (必填)

返回字段:

字段 类型 说明
success bool 删除是否成功
errorCode string 错误码
errorMsg string 错误信息
result object 删除结果

调整收信规则排序

调整指定收信规则的排序位置,向上(up)或向下(down)移动。

Usage:
  dws mail rule adjust [flags]
Example:
  dws mail rule adjust --email user@company.com --id <ruleId> --direction up
  dws mail rule adjust --email user@company.com --id <ruleId> --direction down
Flags:
      --email string      用户的邮箱地址 (必填)
      --id string         规则 ID (必填)
      --direction string  调整方向: up/down (必填)

返回字段:

字段 类型 说明
success bool 调整是否成功
errorCode string 错误码
errorMsg string 错误消息
result object 调整结果

通用错误说明

以下错误适用于所有 mail 命令。

错误标识 含义 处理建议
domain.notFound 该用户的邮箱不是由钉钉邮箱托管,无法完成操作 确认邮箱是否已开通钉钉企业邮箱服务

意图判断

用户说"我的邮箱/邮箱地址" → mailbox list仅限查询自己的邮箱,不能查他人) 用户说"获取/查找/得到 某人的邮箱地址" → 不是 mailbox list,走三路并发查询流程(见「查找他人邮箱地址」章节) 用户说"找邮件/搜邮件/查邮件" → message search 用户说"看邮件/打开邮件/邮件内容" → 先 message search 获取 messageId,再 message get 用户说"发邮件/写邮件" → 先 mailbox list 获取发件地址,再 message send 用户说“给(某人名字)发邮件” / “查询某人发给我的邮件” / “查询发给某人的邮件” / 任何涉及按人名查找邮箱的场景 → 第一步aisearch person --query <姓名> --dimension namecontact user get --ids <userId>,提取 orgAuthEmail;为空时再用 mail user search --email <当前邮箱> --keyword <姓名> 补查。仍无有效邮箱则 ask_human 请用户提供,禁止臆测。 第二步:用获得的目标邮箱拼入 KQL(如 from:<email>to:<email>)执行 message search,或用于 message send 用户说"发带附件的邮件/发邮件附件" → 先 mailbox list 获取发件地址,再 message send --attachment <文件路径> 用户说"给(某人名字)发邮件" → 先 aisearch person 获取 userId,再 contact user get 获取收件人邮箱,再 message send 用户说"查看附件/邮件附件/有什么附件" → 先 message search 获取 messageId,再 attachment list 用户说"下载附件/保存附件/把附件存到本地/把所有附件下载到..." → 先 message search 获取 messageId,再 attachment list 获取 attachmentId 和 name,最后逐个 attachment download不支持批量下载,不存在 download_batch/download_all 命令,必须逐个下载) 用户说"把XX邮件的所有附件都下载" / "批量下载附件" / "下载4月所有发票邮件的附件" → 不存在批量下载命令,必须按以下流程循环执行:1) message search 搜索匹配邮件获取 messageId 列表 → 2) 对每封邮件 attachment list 获取 attachmentId + name → 3) 对每个附件逐个调用 attachment download。不要编造 download_batch / download_all / batch_download 等不存在的命令 用户说"创建邮件文件夹/新建邮箱文件夹/新建邮件目录" → folder create 用户说"在某个邮件文件夹下创建子文件夹" → 先 folder list 找到父文件夹 ID,再 folder create --folder <folderId>;禁止把父文件夹名称直接填给 --folder 用户说"删除邮件文件夹/删除邮箱文件夹/删除邮件目录" → 先确认要删除的文件夹 ID;如果用户只给名称,先 folder list 找到 folders[].id,再 folder delete --id <folderId> 用户说"重命名邮件文件夹/修改邮箱文件夹名称/更新邮件目录名称" → 先确认要更新的文件夹 ID;如果用户只给原名称,先 folder list 找到 folders[].id,再 folder update --id <folderId> --name <新名称> 用户说"查看邮件标签/列出邮箱标签/查看邮箱 label" → tag list 用户说"创建邮件标签/新建邮箱标签/新增 label" → tag create 用户说"在某个邮件标签下创建子标签" → 先 tag list 找到父标签 ID,再 tag create --parent-id <tagId>;禁止把父标签名称直接填给 --parent-id 用户说"删除邮件标签/删除邮箱标签/删除 label" → 先确认要删除的标签 ID;如果用户只给名称,先 tag list 找到 tags[].id,再 tag delete --id <tagId> 用户说"重命名邮件标签/修改邮箱标签名称/更新 label 名称" → 先确认要更新的标签 ID;如果用户只给原名称,先 tag list 找到 tags[].id,再 tag update --id <tagId> --name <新名称> 用户说"列出邮件会话/查看会话列表/查看某个文件夹里的邮件会话" → 先确认邮箱地址和文件夹 ID;如果只有文件夹名称,先 folder list 找到 folders[].id,再 thread list --folder <folderId> 用户说"查看会话/获取会话/看这封邮件的会话详情" → 如果已有会话 ID,直接 thread get;如果只有邮件线索,先 message searchmessage get 获取 conversationId,再 thread get 用户说"标记会话已读/未读/给会话加标签/移除会话标签" → 用 thread update;如果是多条会话,用 thread batch-update;标签操作必须先有标签 ID 用户说"删除会话/把会话放入已删除/批量删除会话" → 单条用 thread trash,多条用 thread batch-trash;传入的是会话 ID,不是邮件 ID 用户说"搜索/查找/联系 邮箱用户/联系人/某人的邮箱地址" → user search(搜索通讯录人员,不是搜邮件内容) 用户说"发送草稿/把草稿发出去/发这封草稿" → 先 message search --query "folderId:5" 找到草稿 messageId,再 draft send 用户说"邮件发出去了吗/查邮件发送状态/确认邮件是否发送成功/邮件投递结果" → 用发送类命令返回的 internetMessageId,调用 message verify 查询 sendStatus 用户说"翻页继续搜索联系人/通讯录" → user search --cursor <nextCursor>(注意:不是 message search

user search vs message search 关键区别:

  • user search:搜索的是(通讯录联系人),入参是 --keyword 姓名--employee-no 工号,返回用户信息
  • message search:搜索的是邮件(邮件内容),入参是 --query KQL表达式,返回邮件列表

严格禁止 (NEVER DO)

  • 明确禁止猜测、假设、推断发件人和收件人邮箱
  • 无法获取邮箱时,强引导ask_human,由用户确认,不要通过假设或其他方式继续执行
  • 严禁在用户未明确指定使用个人邮箱时,默认选择 @dingtalk.com 个人邮箱作为 --email / --from;默认必须从 mailbox list 中挑选企业邮箱
  • 涉及带附件的邮件操作时,严禁上传到钉钉媒体存储(media upload;必须使用对应命令的 --attachment / --inline-attachment 参数,由 CLI 内部完成附件处理
  • 严禁编造不存在的批量下载命令(如 attachment download_batchattachment download_allattachment batch_download 等)。下载附件只有 attachment download 一条命令,每次只能下载一个附件;需要批量下载时必须循环调用
  • 严禁把文件夹名称当作 folder create --folder 的值--folder 只能填父文件夹 ID,父文件夹 ID 必须来自 folder listfolders[].id
  • 严禁把文件夹名称当作 folder delete/update --id 的值--id 只能填要操作的文件夹 ID,文件夹 ID 必须来自 folder listfolders[].idfolder createresult.folder.id
  • 严禁把标签名称当作 tag create --parent-id 的值--parent-id 只能填父标签 ID,父标签 ID 必须来自 tag listtags[].id
  • 严禁把标签名称当作 tag delete/update --id 的值--id 只能填要操作的标签 ID,标签 ID 必须来自 tag listtags[].idtag createresult.tag.id
  • 严禁更新或删除系统标签tag update/delete 只适用于用户自定义标签
  • 严禁把文件夹名称当作 thread list --folder 的值--folder 只能填文件夹 ID,文件夹 ID 必须来自 folder listfolders[].id
  • 严禁把邮件 ID 当作 thread get/update/trash/batch-update/batch-trash 的会话 ID;这些命令需要 conversationId,可来自 thread listconversations[].id 或邮件结果中的 conversationId

核心工作流

# 1. 查看可用邮箱 — 提取邮箱地址
dws mail mailbox list --format json

# 1b. 创建顶层邮件文件夹
dws mail folder create --email user@company.com --name "项目资料" --format json

# 1c. 创建子文件夹 — 先通过 folder list 获取父文件夹 id,再传给 --folder
dws mail folder list --email user@company.com --format json
dws mail folder create --email user@company.com --name "子文件夹" --folder <folderId> --format json

# 1d. 更新或删除邮件文件夹 — 先通过 folder list 获取目标文件夹 id,再传给 --id
dws mail folder list --email user@company.com --format json
dws mail folder update --email user@company.com --id <folderId> --name "新文件夹名" --format json
dws mail folder delete --email user@company.com --id <folderId> --format json

# 1e. 创建顶层邮件标签
dws mail tag create --email user@company.com --name "项目资料" --format json

# 1f. 创建子标签 — 先通过 tag list 获取父标签 id,再传给 --parent-id
dws mail tag list --email user@company.com --format json
dws mail tag create --email user@company.com --name "子标签" --parent-id <tagId> --format json

# 1g. 更新或删除邮件标签 — 先通过 tag list 获取目标标签 id,再传给 --id
dws mail tag list --email user@company.com --format json
dws mail tag update --email user@company.com --id <tagId> --name "新标签名" --format json
dws mail tag delete --email user@company.com --id <tagId> --format json

# 1h. 列出文件夹中的邮件会话 — 先通过 folder list 获取文件夹 id,再传给 --folder
dws mail folder list --email user@company.com --format json
dws mail thread list --email user@company.com --folder <folderId> --limit 10 --format json

# 1i. 修改或删除邮件会话 — 先通过 thread list 获取 conversationId
dws mail thread update --email user@company.com --id <conversationId> --action markRead --format json
dws mail thread batch-update --email user@company.com --ids <conversationId1>,<conversationId2> --action markUnread --format json
dws mail thread trash --email user@company.com --id <conversationId> --format json
dws mail thread batch-trash --email user@company.com --ids <conversationId1>,<conversationId2> --format json

# 2. 搜索邮件 — 提取 messageId
dws mail message search --email user@company.com \
  --query "subject:\"周报\" AND date>2025-06-01T00:00:00Z" --limit 10 --format json

# 3. 查看邮件详情
dws mail message get --email user@company.com --id <messageId> --format json

# 4. 发送邮件(纯文本)
dws mail message send --from user@company.com --to colleague@company.com \
  --subject "周报" --content "本周完成…" --format json

# 4b. 发送带附件的邮件(自动编排:创建草稿→上传附件→发送草稿)
dws mail message send --from user@company.com --to colleague@company.com \
  --subject "周报" --content "见附件" --attachment ./report.pdf --format json

# 4c. 发送带内联图片的邮件(正文自动转 HTML,<img> 标签自动注入)
dws mail message send --from user@company.com --to colleague@company.com \
  --subject "图表周报" --content "本周图表如下:[inline:chart.png]" \
  --inline-attachment ./chart.png --format json

# 5. 下载邮件附件到本地(每次只能下载一个附件,不支持批量下载)
# 步骤 5.1:搜索匹配的邮件,获取 messageId 列表
# 示例:下载4月所有发票邮件的附件
dws mail message search --email user@company.com \
  --query "subject:发票 AND date>2025-04-01T00:00:00Z AND date<2025-05-01T00:00:00Z AND hasAttachments:true" --limit 50 --format json

# 步骤 5.2:对每封邮件,列出附件获取 attachmentId 和 name
# (对搜索结果中的每封邮件都要执行一次)
dws mail attachment list --email user@company.com --id <messageId> --format json

# 步骤 5.3:对每个附件逐个下载(没有批量下载命令,必须循环调用)
dws mail attachment download --email user@company.com \
  --message-id <messageId> --attachment-id <attachmentId> --name report.pdf --output ~/invoices/

# 6. 获取邮件所属会话详情(thread)
# 步骤 6.1:先通过 message search 或 message get 获取邮件中的 conversationId
dws mail message search --email user@company.com \
  --query "subject:\"周报\"" --limit 5 --format json
# 从返回的邮件列表中提取 conversationId 字段

# 步骤 6.2:用 conversationId 获取会话详情
dws mail thread get --email user@company.com --id <conversationId> --format json

上下文传递表

操作 从返回中提取 用于
mailbox list 邮箱地址 message search/get/send/thread get 的 --email/--from
message search messageId message get 的 --id
message search conversationId thread get 的 --id
message search messageId attachment list 的 --id
attachment list attachments[].id / attachments[].name attachment download 的 --attachment-id / --name
message get conversationId thread get 的 --id
folder list folders[].id folder create 的 --folderfolder delete/update 的 --id
folder create result.folder.id 后续创建子文件夹或移动邮件时作为 --folder;更新/删除该文件夹时作为 --id
folder list folders[].id thread list 的 --folder
thread list conversations[].id thread get/update/trash/batch-update/batch-trash 的 --id/--ids
tag list tags[].id thread update/batch-update 的 --tag-ids
tag list tags[].id tag create 的 --parent-idtag delete/update 的 --id
tag create result.tag.id 后续创建子标签时作为 --parent-id;更新/删除该标签时作为 --id
aisearch personcontact user get;必要时 mail user search 用户邮箱 (orgAuthEmail / email) message send 的 --to/--cc
user search 用户邮箱 (email) message send 的 --to/--cc
message send / draft send / message reply / message reply-all / message forward internetMessageId message verify 的 --internet-message-id

注意事项

  • mailbox list 返回用户所有邮箱(含个人和企业),每条记录包含邮箱地址、账号类型、所属企业。默认一律选择企业邮箱(除非用户明确指定使用个人邮箱);若有多个企业邮箱可选,优先匹配用户当前所在企业的那一个;仍无法判断时向用户确认后再操作。详见文档顶部「默认邮箱选择规则」章节
  • message search 返回邮件 ID 和元信息(不含正文),需 message get 获取完整内容
  • KQL 查询支持 AND/OR/NOT 组合,字段值含空格时需用双引号
  • --cc 抄送人支持多人,逗号分隔
  • 收件人邮箱获取:用户只知道同事名字时,先 dws aisearch person --query "名字" --dimension name 取得 userId,再 dws contact user get --ids <userId> 提取 orgAuthEmail。该字段为空时,可用 dws mail user search --email <发件人邮箱> --keyword "名字" 补查(仅企业邮箱账号可调用;若已知工号,可改用 --employee-no <工号>)。仍无有效邮箱时必须 ask_human,严禁臆测和假设
  • thread list --folder 的值必须是文件夹 ID,不是文件夹显示名称;不知道文件夹 ID 时,先调用 folder listfolders[].id
  • thread get/update/trash/batch-update/batch-trash 使用的是会话 IDconversationId),不是邮件 ID;会话 ID 可来自 thread listconversations[].id,也可来自 message searchmessage get 返回的 conversationId
  • thread update / thread batch-update 仅支持 markReadmarkUnreadaddTagsremoveTags;标签操作必须传 --tag-ids
  • user search 仅支持企业邮箱(非 @dingtalk.com 个人邮箱),使用个人邮箱将因无权限报错;搜到的用户邮箱(email 字段)可直接用于 message send--to/--cc 参数
  • folder create --folder 的值必须是父文件夹 ID,不是文件夹显示名称;不知道父文件夹 ID 时,先调用 folder listfolders[].id
  • folder delete/update --id 的值必须是目标文件夹 ID,不是文件夹显示名称;不知道目标文件夹 ID 时,先调用 folder listfolders[].id