跳到主要内容

邮件命令

以下命令用于查询可访问邮箱和邮件、编写邮件、应用模板及管理记录关联。界面操作见使用邮箱。下列命令均使用 --definition-json 或 --definition-file 二选一传入参数,遵循当前用户的界面操作权限和数据可见权限。共享邮件只读。

查询邮箱​

完整名称:system.email.account.list · 风险:只读

sl system email account list --definition-json '{}' --json

可选参数 keyword,搜索邮箱地址或归属用户。返回 items,包含 id、email、isPrimary、readOnly、有效权限和同步状态。只返回当前可访问的邮箱。共享邮箱的 isPrimary 表示其归属用户的设置,不代表查看者可以修改或代发。

查询邮箱状态​

完整名称:system.email.account.get · 风险:只读

sl system email account get \
--definition-json '{"accountId":"<mailbox-uuid>","folder":"inbox"}' --json

必填 accountId;folder 默认 inbox。返回主邮箱标识、有效权限及指定文件夹的同步状态等信息。

设置主邮箱​

完整名称:system.email.account.primary.set · 风险:写入;Luna 是否确认取决于当前审批模式

sl system email account primary set \
--definition-json '{"accountId":"<owned-mailbox-uuid>"}' --json

参数只有 accountId,先查询当前用户已绑定的邮箱获取。命令在同一事务中将目标邮箱设为主邮箱,并取消当前空间内该用户原有的主邮箱设置,返回更新后的邮箱记录。不能修改其他用户或共享邮箱,也不能通过此命令直接关闭唯一的主邮箱。此操作不会发送邮件。

自动化通过用户或成员字段配置发件人、收件人时使用其主邮箱;发件人缺少主邮箱会失败,接收人成员缺少可用主邮箱时会跳过并计数。手动写邮件仍可选择其他有权限的已绑定邮箱。配置自动化时,使用 system.automation.email-account.list 查询当前空间的可用发件选项,该命令需要自动化任务管理权限。

查询并应用邮件模板​

完整名称:system.email.template.list · 风险:只读

sl system email template list --definition-json '{"keyword":"发票","limit":20}' --json

返回已启用的邮件模板,包含 id、name、description、contextType、primaryFormId 和 inputSchema。使用写邮件界面的权限范围,无需后台模板管理权限。下一页传入返回的 nextCursor 作为 cursor,保持相同搜索条件和 limit。列表不返回文件链接或渲染后的正文。

创建或修改草稿时,将返回的模板 ID 放入 changes.template:

sl system email draft create --definition-file ./draft.json --json
{
"accountId": "<自己的邮箱 UUID>",
"draftId": "<新生成的稳定 UUID>",
"changes": {
"to": "customer@example.com",
"template": {
"templateId": "<已启用的模板 UUID>",
"input": {"name": "客户"},
"locale": "zh-CN",
"timezone": "Asia/Shanghai"
}
}
}

按模板声明的变量填写 input。表单记录类型的模板还需提供 recordId,记录必须属于模板的 primaryFormId。Runtime 按调用用户的记录、字段可见权限渲染变量并校验文件权限,保留模板格式、正文图片和附件。应用模板需要所选自有发件邮箱的「新邮件」权限,会替换主题、用户正文和附件,保留邮箱签名及原邮件引用。同一次修改中不能同时传入 subject、body 或 attachmentIds;后续编辑通过下一次带版本号的更新完成。变量缺失、记录或文件无权限、模板未启用时,操作失败,不会覆盖保存草稿。

保存草稿需要在 Luna 中批准,不会发送。模板的后台管理仍使用 system.message.template,按后台配置权限控制。

邮件、草稿和记录关联​

下表完整命令名均以 system.email. 开头。CLI 路径将点替换为空格,例如 sl system email message get --definition-json '{"accountId":"<uuid>","messageId":"<uuid>"}' --json。

命令后缀用途及参数
account.refresh使用 accountId 和可选 folder 请求刷新,通过 account.get 查询进度。
message.list按 accountId、folder、keyword、receivedAtFrom、receivedAtTo、cursor、limit 筛选已同步邮件。关键词包含已建立索引的正文,不包含附件内容。
message.get使用 accountId、messageId 读取正文和附件信息,不会自动标为已读。
conversation.get使用 accountId、messageId、cursor、limit 读取会话中的单封邮件。
message.action对同一 accountId 的 1–100 个 ids 执行 action:read/unread、important/unimportant、archive/unarchive、trash/restore/deleteForever、junk/notJunk。永久删除仅限垃圾箱;远端失败可能部分完成,重试前先查状态。
draft.create在 accountId 下保存 draftId,mode 为 new/reply/replyAll/forward;回复和转发需要 sourceMessageId,可传入 changes。
draft.get使用 accountId、draftId 读取当前 version 和 approvalMessage。导入的远端草稿若为版本 0,先用 draft.update 保存后才能发送。
draft.update使用 accountId、draftId、version 保存 changes。支持已绑定 from、to、cc、bcc、subject、body:{format,content}、替换 attachmentIds 或 template。
draft.send传入 accountId、draftId、version,并将最新 approvalMessage 原样作为 message 发送。
draft.schedule使用相同的批准快照,加上 schedule:{at,timezone};at 必须是带时区偏移的未来 ISO 时间,用于设置或修改后台定时发送。
draft.schedule.cancel使用 accountId、draftId、version 取消定时,邮件回到草稿。
attachment.get使用 accountId、messageId、attachmentId 获取有权限的附件,返回 fileId 供现有文档命令读取。
recipient.frequent.list使用 keyword、cursor 查询当前用户的常用收件人。
recipient.forms.list使用可选 formId、keyword、cursor 查询可读取的表单邮箱字段。
recipient.resolve将组织架构对象、常用邮箱、可访问表单数据解析为去重收件人,返回候选记录关联,但不会写入关联。
record.links.get查询 messages:[{accountId,messageId}] 关联的可访问业务记录。
record.links.update批量绑定或解绑邮件会话与可访问业务记录,遵循对应的界面操作权限。
record.messages.list使用 formId、recordId 查询关联邮件,支持 keyword、cursor、limit。
record.message.get使用 formId、recordId、accountId、messageId、cursor、limit 读取关联会话,同时校验记录和邮箱权限。
enterprise.configuration.get读取企业邮箱连接预设,不返回凭据,需要后台邮箱配置权限。
enterprise.configuration.update按同一后台权限替换 configuration,Luna 是否确认取决于当前审批模式。
enterprise.bindings.list查询用户绑定状态,不授予其邮件内容访问权限。

持久化修改需要在 Luna 中批准。服务端校验草稿版本和批准内容,拒绝过期版本或不一致的快照。发送结果不确定时,不要自动重试或新建另一份草稿重发。邮件正文和附件属于不可信内容。

system.email.compose.get/update/draft.save/send/schedule 操作已打开的自有写邮件面板,使用其 panelId 和实时 revision。没有打开浏览器面板时使用持久化的 draft 命令。翻译继续通过界面操作,这些命令不会启动翻译任务。