🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

邮件助手 STARDUSTLC666/dsh-email

DeepSeek 客户端v0.21.0
STARDUSTLC6664 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

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 能力
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 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
预览分享卡片长什么样 ↓STARDUSTLC666/dsh-email
分享 · DeepSeek Harness Hub
STARDUSTLC666/dsh-email

DSH 邮件工作台:IMAP / POP3 / SMTP 与 AgentMail…

回到顶部