85 KiB
邮箱 (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 子命令一律适用。
默认选择策略:
- 调用
dws mail mailbox list --format json获取当前用户的所有邮箱。 - 从返回的
mailboxes中优先选择企业邮箱(账号类型为企业邮箱、域名非@dingtalk.com的邮箱),将其作为--email/--from的默认值。 - 仅当用户在指令中明确指定「用我的个人邮箱」「用 dingtalk.com 邮箱」「用我的私人邮箱」等表述时,才选择个人邮箱(
@dingtalk.com域名)。 - 若用户同时拥有多个企业邮箱(如分属多家公司),优先选择与当前会话上下文匹配的企业邮箱;若仍无法判断,向用户确认后再操作。
- 若用户仅拥有个人邮箱(无企业邮箱),可直接使用个人邮箱,但需注意
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 文件夹 ID(1=已发送, 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:0、isRead:"false"(不支持数字或字符串形式) |
hasAttachments |
布尔 true/false |
是否有附件 | hasAttachments:true |
hasAttachments:yes |
subject |
字符串 | 邮件主题,含空格须加双引号 | subject:周报、subject:"项目 进展" |
subject:项目 进展(含空格未加引号) |
attachname |
字符串 | 附件文件名,含空格须加双引号 | attachname:report.pdf、attachname:"月度 报告.xlsx" |
attachname:月度 报告.xlsx(含空格未加引号) |
body |
字符串 | 邮件正文内容,含空格须加双引号 | body:会议纪要、body:"Q1 总结" |
body:Q1 总结(含空格未加引号) |
from |
字符串(邮件地址或名称) | 发件人,支持:纯邮件地址、纯名称(含空格须加双引号)、"名称<邮件地址>" 格式 |
from:alice@company.com、from:"张 三"、from:"alice<a@b.com>" |
from:张 三(含空格未加引号) |
to |
字符串(邮件地址或名称) | 收件人,支持:纯邮件地址、纯名称(含空格须加双引号)、"名称<邮件地址>" 格式 |
to:bob@company.com、to:"李 四"、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 search或message 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 自动执行以下编排流程:
- 创建邮件草稿(若有内联图片,正文自动转为 HTML 并注入
<img>标签) - 为每个普通附件调用
create_upload_session(isInline=false),从响应的uploadUrl字段获取完整上传地址,HTTP POST 上传文件内容 - 为每个内联图片调用
create_upload_session(isInline=true,传入 contentId),从响应的uploadUrl字段获取完整上传地址,HTTP POST 上传文件内容 - 调用
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 自动执行以下编排流程:
- 调用
create_download_session,从响应的downloadUrl字段获取完整下载地址 - 通过 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 list 的 conversations[].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 自动执行以下编排流程:
- 调用
create_reply_draft创建回复草稿(若有内联图片,正文自动转为 HTML 并注入<img>标签) - 为每个普通附件创建上传会话并上传(
isInline=false) - 为每个内联图片创建上传会话并上传(
isInline=true,传入自动生成的 contentId) - 发送草稿
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
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 自动执行以下编排流程:
- 调用
create_replyall_draft创建回复全部草稿(若有内联图片,正文自动转为 HTML 并注入<img>标签) - 为每个普通附件创建上传会话并上传(
isInline=false) - 为每个内联图片创建上传会话并上传(
isInline=true,传入自动生成的 contentId) - 发送草稿
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
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 自动执行以下编排流程:
- 调用
create_forward_draft创建转发草稿(若有内联图片,正文自动转为 HTML 并注入<img>标签) - 为每个普通附件创建上传会话并上传(
isInline=false) - 为每个内联图片创建上传会话并上传(
isInline=true,传入自动生成的 contentId) - 发送草稿
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
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 create 或 message search(folderId: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(匹配对象)和 or(OR 表达式列表)组成,or 内嵌 and(AND 条件列表)。
| 字段 | 说明 |
|---|---|
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 name → contact 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 search 或 message 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_batch、attachment download_all、attachment batch_download等)。下载附件只有attachment download一条命令,每次只能下载一个附件;需要批量下载时必须循环调用 - 严禁把文件夹名称当作
folder create --folder的值;--folder只能填父文件夹 ID,父文件夹 ID 必须来自folder list的folders[].id - 严禁把文件夹名称当作
folder delete/update --id的值;--id只能填要操作的文件夹 ID,文件夹 ID 必须来自folder list的folders[].id或folder create的result.folder.id - 严禁把标签名称当作
tag create --parent-id的值;--parent-id只能填父标签 ID,父标签 ID 必须来自tag list的tags[].id - 严禁把标签名称当作
tag delete/update --id的值;--id只能填要操作的标签 ID,标签 ID 必须来自tag list的tags[].id或tag create的result.tag.id - 严禁更新或删除系统标签;
tag update/delete只适用于用户自定义标签 - 严禁把文件夹名称当作
thread list --folder的值;--folder只能填文件夹 ID,文件夹 ID 必须来自folder list的folders[].id - 严禁把邮件 ID 当作
thread get/update/trash/batch-update/batch-trash的会话 ID;这些命令需要 conversationId,可来自thread list的conversations[].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 的 --folder;folder 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-id;tag delete/update 的 --id |
tag create |
result.tag.id |
后续创建子标签时作为 --parent-id;更新/删除该标签时作为 --id |
aisearch person → contact 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 list查folders[].idthread get/update/trash/batch-update/batch-trash使用的是会话 ID(conversationId),不是邮件 ID;会话 ID 可来自thread list的conversations[].id,也可来自message search或message get返回的conversationIdthread update/thread batch-update仅支持markRead、markUnread、addTags、removeTags;标签操作必须传--tag-idsuser search仅支持企业邮箱(非@dingtalk.com个人邮箱),使用个人邮箱将因无权限报错;搜到的用户邮箱(email字段)可直接用于message send的--to/--cc参数folder create --folder的值必须是父文件夹 ID,不是文件夹显示名称;不知道父文件夹 ID 时,先调用folder list查folders[].idfolder delete/update --id的值必须是目标文件夹 ID,不是文件夹显示名称;不知道目标文件夹 ID 时,先调用folder list查folders[].id