DSH 邮件工作台:IMAP / POP3 / SMTP 与 AgentMail…
47.4/100
综合分
27
GitHub 星标
3,450
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/STARDUSTLC666/dsh-email.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-email @ 0.21.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:40:34
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 55 处,展示前 54 条)
- 发起网络请求lib/client.js:292
const response = await fetch(route, { method: 'POST', credentials: 'same-origin', cache: 'no-store', signal: controller.signal, headers: { 'content-ty - 发起网络请求lib/client.js:309
const close = () => { void fetch(route, { method: 'POST', credentials: 'same-origin', keepalive: true, headers: { 'content-type': 'application/json', - 发起网络请求lib/client.js:696
const res = await fetch(ROUTE, { ...init, signal }); - 发起网络请求lib/client.js:731
const res = await fetch(ROUTE, { - 发起网络请求lib/client.js:2804
const response = await fetch(MAILBOX_ROUTE, { credentials: "same-origin", method: "POST", headers: { "Content-Type": "application/json", "x-dsh-email- - 发起网络请求lib/client.js:2936
const response = await fetch(upload ? DRAFT_ROUTE + "/upload" : DRAFT_ROUTE, init), result = await response.json(); - 发起网络请求lib/approval.js:55
const outcome = await approval.request({ - 读取本地文件lib/web.js:652
names = readdirSync(dir); - 读取本地文件lib/web.js:696
if (existsSync(fallback)) { - 读取本地文件lib/web.js:1251
const bytes = readFileSync(asset.file); - 读取本地文件lib/legacy-settings.js:37
document = parse(readFileSync(resolve(base, file), 'utf8')); - 读取本地文件lib/draft-web.js:57
const info = await stat(file.path); - 读取本地文件lib/draft-web.js:60
stream = createReadStream(file.path, { signal }); - 写入本地文件lib/draft-web.js:284
await mkdir(dirname(path), { recursive: true, mode: 0o700 }); - 读取本地文件lib/draft-web.js:311
const info = await stat(file.path).catch(() => null); - 发起网络请求lib/draft-web.js:335
async fetch(request) { - 发起网络请求lib/draft-web.js:399
host.connection?.fetch?.register?.({ path: EMAIL_DRAFT_ROUTE, methods: ['POST', 'GET'], requestBody: 'buffered', fetch: (request) => backend.fetch(req - 发起网络请求lib/draft-web.js:400
host.connection?.fetch?.register?.({ path: EMAIL_DRAFT_ROUTE + '/upload', methods: ['POST'], requestBody: 'streaming', fetch: (request) => backend.fet - 发起网络请求lib/mailbox-web.js:96
async fetch(request) { - 读取本地文件lib/mailbox-web.js:174
const bytes = await readFile(file.path); - 删除本地文件lib/mailbox-web.js:189
await unlink(file.path).catch(() => { }); - 发起网络请求lib/mailbox-web.js:218
fetch: (request) => backend.fetch(request), - 读取密钥环境变量lib/config.js:383
const key = String(acc.password || acc.apiKey || (sharedApi ? common.password || common.apiKey : '') || (allowEnvPassword ? process.env.DSH_AGENTMAIL_ - 发起网络请求lib/oauth2.js:247
response = await fetch(url, { - 写入本地文件lib/mail-client.js:1168
await mkdir(dir, { recursive: true }); - 写入本地文件lib/mail-client.js:1172
await writeFile(dest, buf, signal === undefined ? undefined : { signal }); - 读取本地文件lib/mail-client.js:1277
info = await stat(path); - 读取本地文件lib/mail-client.js:1321
await stat(path); - 读取本地文件lib/mail-client.js:1332
await stat(candidate); - 读取本地文件lib/draft-store.js:37
if ((await stat(this.file)).size > 16 * 1024 * 1024) - 读取本地文件lib/draft-store.js:39
const doc = JSON.parse(await readFile(this.file, 'utf8')); - 写入本地文件lib/draft-store.js:75
await rename(temporary, this.file); - 删除本地文件lib/draft-store.js:78
await unlink(temporary).catch(() => { }); - 写入本地文件lib/draft-store.js:83
await mkdir(this.root, { recursive: true, mode: 0o700 }); - 读取本地文件lib/draft-store.js:155
const root = await realpath(join(this.root, 'draft-uploads', id)), target = await realpath(file.path); - 删除本地文件lib/draft-store.js:158
await unlink(file.path); - 发起网络请求lib/agentmail.js:95
const value = await this.request(name, '', {}, undefined, signal); - 发起网络请求lib/agentmail.js:120
const res = await this.request(name, query ? '/messages/search' : '/messages', { - 发起网络请求lib/agentmail.js:185
const id = this.id(uid), m = await this.request(name, '/messages/' + encodeURIComponent(id), {}, undefined, signal); - 发起网络请求lib/agentmail.js:223
const r = await this.request(name, '/messages/' + encodeURIComponent(this.id(uid)), {}, changes[action], signal, 'PATCH'); - 发起网络请求lib/agentmail.js:248
const r = await this.request(name, reply - 发起网络请求lib/agentmail.js:274
const meta = await this.request(name, '/messages/' + - 写入本地文件lib/agentmail.js:289
await mkdir(dir, { recursive: true }); - 删除本地文件lib/agentmail.js:298
await unlink(path).catch(() => { }); - 读取本地文件lib/agentmail.js:320
for await (const chunk of createReadStream(path, { signal })) { - 写入本地文件lib/pop3.js:225
await mkdir(dir, { recursive: true }); - 删除本地文件lib/pop3.js:234
await unlink(path).catch(() => { }); - 执行外部命令来自配置/变量lib/oauth2-storage.js:28
const result = spawnSync(executable, ['-NoLogo', '-NoProfile', '-NonInteractive', '-EncodedCommand', Buffer.from(script, 'utf16le').toString('base64') - 读取本地文件lib/oauth2-storage.js:53
const raw = readFileSync(file, 'utf8'); - 读取本地文件lib/oauth2-storage.js:81
existing = parseDocument(readFileSync(file, 'utf8')); - 写入本地文件lib/oauth2-storage.js:95
mkdirSync(dirname(file), { recursive: true, mode: 0o700 }); - 写入本地文件lib/oauth2-storage.js:100
writeFileSync(fd, raw, 'utf8'); - 写入本地文件lib/oauth2-storage.js:104
renameSync(temp, file); - 删除本地文件lib/oauth2-storage.js:111
unlinkSync(temp);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 回复转发与附件
- 多账号与OAuth2登录
DSH 邮件插件:IMAP/SMTP 收发搜索、回复转发、附件与整理,多账号卡片设置页、Outlook OAuth2 登录与发信审批。
README
由 DeepSeek 最新模型翻译生成dsh-email
dsh-email 鲸鱼娘插件封面
在 DSH 邮件工作台管理 IMAP / POP3 / SMTP 与 AgentMail 多账号。查看收件箱和已发送、搜索邮件、下载附件,并先保存与检查草稿,再明确确认发送。
downloads total downloads
下载统计说明
欢迎使用,遇到问题或有改进建议,请提交 issues 和 PR。
从 DSH 原生侧栏打开工作台;配置与操作边界见工作台说明。
功能
- 通过 IMAP / SMTP 收发、回复和转发邮件。
- 通过邮箱地址与 API Key 添加 AgentMail US / EU 账号,无需配置 IMAP / SMTP。
- 在「收发邮件」页浏览收件箱与已发送,搜索、翻页、阅读正文、下载附件、标记已读和星标。
- 管理附件、搜索结果与邮箱整理操作。
- 搜索无可信服务端结果时,分批检查邮件信封,并说明覆盖范围;可继续查更早邮件。
- 多账号设置,支持 Outlook OAuth2、Windows 登录令牌加密和发信审批。
- 新邮件弹窗可在设置中关闭,保存后重启仍生效。
- 准备和编辑本地草稿,核对发件人、To/Cc、正文与附件预览后再确认发送。
- 按账号管理可信与禁止收件人,预览规则如何匹配地址、地址组和抄送。
安装
桌面版可在「插件」面板按包名 dsh-email 安装。
展开完整文档(README 剩余 1 节)
dsh-email dsh-email 鲸鱼娘插件封面 在 DSH 邮件工作台管理 IMAP / POP3 / SMTP 与 AgentMail 多账号。查看收件箱和已发送、搜索邮件、下载附件,并先保存与检查草稿,再明确确认发送。 downloads total downloads 下载统计说明 欢迎使用,遇到问题或有改进建议,请提交 issues 和 PR。 从 DSH 原生侧栏打开工作台;配置与操作边界见工作台说明。 功能 - 通过 IMAP / SMTP 收发、回复和转发邮件。 - 通过邮箱地址与 API Key 添加 AgentMail US / EU 账号,无需配置 IMAP / SMTP。 - 在「收发邮件」页浏览收件箱与已发送,搜索、翻页、阅读正文、下载附件、标记已读和星标。 - 管理附件、搜索结果与邮箱整理操作。 - 搜索无可信服务端结果时,分批检查邮件信封,并说明覆盖范围;可继续查更早邮件。 - 多账号设置,支持 Outlook OAuth2、Windows 登录令牌加密和发信审批。 - 新邮件弹窗可在设置中关闭,保存后重启仍生效。 - 准备和编辑本地草稿,核对发件人、To/Cc、正文与附件预览后再确认发送。 - 按账号管理可信与禁止收件人,预览规则如何匹配地址、地址组和抄送。 安装 桌面版可在「插件」面板按包名 dsh-email 安装。已配置 dsh 命令时也可使用: dsh plugin --profile desktop add dsh-email 网页版把命令中的 desktop 改为 web。安装后重启 DSH。 开始使用 需要 POP3 的账号,可在「邮箱设置」选择收信协议并测试连接。支持读信、范围明确的本地搜索、附件和 SMTP 回复草稿;服务器状态与协议限制见 POP3 使用流程。 1. 打开“邮件”的账号设置,选择自己的 IMAP/SMTP、OAuth 或 AgentMail 账号并填写授权信息。 2. 测试连接,选择要使用的账号,再从“收发邮件”读取收件箱和已发送。 3. 搜索并打开邮件,核对正文与附件;可让助手“准备回复,先不要发送”。 4. 到“草稿”编辑、保存和检查预览,核对 To/Cc、附件和发信账号后再确认发送。 5. 在已发送或原邮件线程中核对结果;收件人禁止规则始终优先。 依赖与配置 普通邮箱需要授权码、应用专用密码或对应 OAuth 授权;AgentMail 需要对应区域的邮箱与 API Key,见 AgentMail 配置。DSH 的模型 API Key 与邮箱登录分别配置。 详细配置、工具参数与排错见使用说明。从源码独立开发时,Node 要求以 package.json 为准。 文档 - 使用与排错 - 更新记录 - 验证范围与历史记录 - 问题反馈与功能建议 插件更新 需要 DSH 0.2.1-rc.3 或更新版本。更新控件直接位于原有工作台内容末尾;没有工作台的插件,位于原生插件详情页底部。检查、更新记录和偏好在原地展开,不增加独立更新页面或设置菜单。自动检查默认开启;自动安装默认关闭,明确授权后才会在空闲且没有未保存修改时安装兼容的稳定补丁。开关按插件独立保存,可关闭、推迟或忽略提醒;不会强制重启 DSH、升级 DSH 本体或替换本地源码安装。Suite 组件在当前页面底部明确说明并操作 Suite 整包更新。 旧版用户先在官方插件管理中手动更新一次,之后才会获得此入口。发布到 npm 不会直接替换用户已经安装的版本。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
STARDUSTLC666/dsh-email
DSH 邮件工作台:IMAP / POP3 / SMTP 与 AgentMail…
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7