面向密码认证被禁用邮箱的 OAuth2 IMAP 读取插件:微软 2024 年起停用个人 Outlook 的 IMAP 基本认证,本插件改用 refresh-token OAuth2(XOAUTH2)自动续期,Gmail 走应用密码并可选本地 HTTP/SOCKS 代理;工具注册为 ol_email_*,可与市场版 dsh-email 共存不撞名。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:huaxiren6/DSH-EmailReader
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
✉️ DSH-EmailReader

DeepSeek Harness IMAP 邮件读取插件(OAuth2 版)
基于 imapflow 连接任意 IMAP 邮箱,让模型具备读邮件的能力。
简介
给 DeepSeek Harness 提供三个模型可调用的邮件工具:列邮件、读全文、服务端搜索。支持多账号、OAuth2 与代理。
npm 包名
dsh-email-reader(dsh-email已被其他作者占用)。
解决的实际问题
微软从 2024 年 9 月起停止了对个人 Outlook.com 账号 IMAP 的基本认证(用户名+密码,含应用密码),只接受 OAuth2。 市面上多数邮件插件(含市场版 dsh-email)仍只支持密码登录,导致 Outlook 账号无法读取。本插件补上了这个缺口:
- 🔐 OAuth2 / XOAUTH2:
refreshToken + clientId自动换取 access token,无需手动授权,微软禁用密码认证的账号也能读 - 🌐 HTTP/SOCKS 代理:教育网 / 企业网直连 Google 被屏蔽时,可指定本地代理(如
http://127.0.0.1:7892)访问 Gmail - 🧩 与市场版 dsh-email 共存:工具注册为
ol_email_*(ol = Outlook)前缀,不与市场版的email_*撞名,两个插件可同时安装——市场版管 Gmail,本插件管 Outlook
功能特性
- ✉️
ol_email_list— 列出收件箱最近邮件(发件人 / 主题 / 时间 / 旗标) - 📄
ol_email_read— 读取单封邮件全文(含正文,自动解析 MIME,兼容 Outlook 服务器) - 🔍
ol_email_search— 服务端 IMAP 全文搜索,最新优先 - 👥 多账号:
accounts[]配置,account参数切换 - 🔐 OAuth2:refreshToken + clientId 自动换 access token(Microsoft / 任意端点)
- 🌐 可选 HTTP/SOCKS 代理(教育网 / 企业网访问 Google 等被屏蔽服务时使用)
- 🛡️ 全部工具返回
{ ok, ... },绝不抛异常,配置错误不会拖垮宿主
安装
dsh plugin --profile web add dsh-email-reader
配置
方式一:OAuth2(推荐,Outlook 等强制 OAuth 的邮箱)
- insert:
- id: email-reader
name: dsh-email-reader
config:
accounts:
- id: outlook
host: outlook.office365.com
port: 993
user: you@outlook.com
refreshToken: "从 OAuth 授权流程获取"
clientId: "你的应用 Client ID"
tokenUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/token"
mailbox: INBOX
方式二:密码 / 应用专用密码
- insert:
- id: email-reader
name: dsh-email-reader
config:
host: imap.example.com
port: 993
user: you@example.com
pass: your-app-password
tls: true
mailbox: INBOX
方式三:环境变量(凭据不落盘)
| 环境变量 | 含义 | 默认 |
|---|---|---|
DSH_IMAP_HOST |
IMAP 服务器(必填) | — |
DSH_IMAP_PORT |
端口 | 993 |
DSH_IMAP_USER |
用户名 | — |
DSH_IMAP_PASS |
密码 / App 专用密码 | — |
DSH_IMAP_TLS |
是否 TLS | true |
DSH_IMAP_MAILBOX |
默认邮箱 | INBOX |
DSH_IMAP_OAUTH_REFRESH |
OAuth refresh token | — |
DSH_IMAP_CLIENT_ID |
OAuth client id | — |
DSH_IMAP_TOKEN_URL |
OAuth token 端点 | — |
DSH_IMAP_PROXY |
代理地址(如 http://127.0.0.1:7892) |
— |
走代理访问 Gmail 的示例
- insert:
- id: email-reader
name: dsh-email-reader
config:
accounts:
- id: gmail
host: imap.gmail.com
port: 993
user: you@gmail.com
pass: your-app-password
proxy: "http://127.0.0.1:7892"
mailbox: INBOX
使用示例
对模型说:
- 「看下收件箱最近 5 封邮件」→
ol_email_list - 「读第 12 封邮件的内容」→
ol_email_read - 「搜一下主题里含 'invoice' 的邮件」→
ol_email_search
每个工具都支持可选的 connection 覆盖对象({host, port, user, pass, tls, mailbox}),一个插件可访问多个邮箱。
License
链接
同类插件
DayuanJiang/next-ai-draw-io#dsh-plugin★ 36777
dsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
Tencent/WeKnora#dsh-weknora★ 36302
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 7042
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
T-Auto/dsh-ops★ 5074
为 Windows 的 DSH 提供 bash、PowerShell 7 及 Rust 高性能工具,减少 token 消耗。
sixtysevenlf/dsh-blender-plugin★ 1575
让 DSH agent 通过直连 TCP 通道驱动本地 Blender,提供 15 个工具:视口帧、自定义视角渲染、Python 执行、无头与作业卸载、事务回滚,以及 34 个 family / 228 个 op 的规划层。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1155
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。