dsh-email
IMAP/SMTP邮件收发与管理工具 适合需要通过DSH进行多账号邮件收发、搜索、回复及发信审批的用户。
同名套件的其他儲存庫
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:STARDUSTLC666/dsh-email說明文件
閱讀完整 README ↗配置
在你 profile 的 cordis.patch.yml 里覆盖 tool-email 行(在 $DSH_HOME/profiles// 下),然后重启:
- id: tool-email
config:
provider: qq # qq | 163 | 126 | sina | aliyun | gmail | outlook | icloud
user: you@qq.com
password: 你的授权码 # 强烈建议改用环境变量 DSH_EMAIL_PASSWORD,见下
不需要预设?手填任意 IMAP/SMTP 服务器即可:
- id: tool-email
config:
user: you@corp.example
password: 你的授权码
imap: { host: imap.corp.example, port: 993, secure: true }
smtp: { host: smtp.corp.example, port: 465, secure: true }
inboxFolder: INBOX
多账号:一个 tool-email 行可以配多个邮箱,工具调用时用 account 参数选择:
- id: tool-email
config:
accounts:
work: { provider: qq, user: work@qq.com, password: 授权码1 }
home: { provider: '163', user: home@163.com, password: 授权码2 }
defaultAccount: work # 省略 account 参数时用这个
downloadDir: E:/attachments # 可选,默认 $DSH_HOME/email-downloads
顶层的 provider/user/password/imap/smtp/inboxFolder 仍兼容旧单账号写法。具名账号声明自己的 provider 时,服务器取该预设,账号自己的 imap/smtp 显式覆盖优先;未声明服务商的账号继续继承顶层服务器。共享连接超时仍可生效。
想在多个账号之间复用同一套连接端点,可以用 serverPresets 自定义服务商预设(YAML 映射,键 = 预设名,值含可选的 label 与 imap/smtp):
- id: tool-email
config:
serverPresets: |
corp:
label: 公司邮箱
imap: { host: imap.corp.example, port: 993, secure: true }
smtp: { host: smtp.corp.example, port: 465, secure: true }
设置页的「服务器预设」折叠区能可视化增删改这些预设,账号卡片的服务商下拉里会自动多出预设名,选中即把端点预填进账号。预设只记连接参数,不含邮箱地址和授权码;port/secure 可省略(默认 993/465 与 SSL)。
常用邮箱预设
| provider | IMAP | SMTP |
|---|---|---|
qq | imap.qq.com:993 (SSL) | smtp.qq.com:465 (SSL) |
163 | imap.163.com:993 | smtp.163.com:465 |
126 | imap.126.com:993 | smtp.126.com:465 |
sina | imap.sina.com:993 | smtp.sina.com:465 |
aliyun | imap.aliyun.com:993 | smtp.aliyun.com:465 |
gmail | imap.gmail.com:993 | smtp.gmail.com:465 |
outlook | outlook.office365.com:993 | smtp.office365.com:587 (STARTTLS) |
icloud | imap.mail.me.com:993 | smtp.mail.me.com:587 (STARTTLS) |
完整配置项
| 字段 | 默认 | 说明 |
|---|---|---|
provider | 无 | 预设名,自动填 imap/smtp 地址;显式写的 host/port/secure 优先 |
user | 必填 | 登录邮箱地址 |
password | 必填* | 授权码/应用专用密码;*也可用环境变量 DSH_EMAIL_PASSWORD |
senderName | 无 | 发件显示名:只改收件人看到的名称,发件地址仍是 user |
authUser | = user | 登录账号。别名 / SMTP 中继场景:user 是发件地址,这里填真正用于 IMAP/SMTP 认证的账号 |
authPassword | = password | authUser 对应的密码;只有登录账号与 user 不同、且密码也不一样时才需要 |
imap.host/port/secure | 按预设 | 收信服务器(另有 connectionTimeoutMs/socketTimeoutMs 可调超时) |
smtp.host/port/secure | 按预设 | 发信服务器 |
inboxFolder | INBOX | 收发工具默认使用的文件夹 |
sendApproval | true | 发信前弹确认(强烈建议保留) |
maxBodyChars | 20000 | email_read 正文截断上限(1000–200000) |
accounts | 无 | 具名账号表;账号级字段覆盖顶层简写 |
accountsYaml | 无 | 账号映射的 YAML 文本,由设置页的卡片编辑器写入;非空时覆盖 accounts |
clientId | 内置社区应用(见下) | OAuth2 账号的应用(客户端)ID:留空即用插件内置的公共客户端,填了则覆盖内置值(账号级也可覆盖顶层简写) |
authKind | 按 provider 派生 | 认证方式覆盖,取值 oauth2 / password。缺省时按 provider 与 IMAP 主机派生;仍能用应用密码连 Exchange Online 的混合或本地租户可钉 password。设置页卡片的「认证方式」选择器即写此键 |
serverPresets | 无 | 自定义服务商预设的 YAML 文本(键=预设名,值含 label?/imap/smtp);只存端点、不含凭证,设置页下拉会列出预设名并把端点预填进账号卡片,改预设不会重连已建立的连接 |
defaultAccount | 单账号时自动 | 工具省略 account 参数时使用的账号(多账号必填) |
downloadDir | 会话工作区下 .dsh-email-downloads(回退 $DSH_HOME/email-downloads) | email_attachment 的落盘目录;显式设置后固定 |
maxAttachmentBytes | 20 MiB | 单个附件与附件总大小上限(1024–512 MiB) |
idleTimeoutMs | 60000 | IMAP 空闲连接回收时间(连接复用,连续操作更快) |
bodySearchFallback | true | 服务器搜索无结果时,回退到客户端扫描最近邮件的正文 |
bodySearchLimit | 30 | 正文回退扫描的邮件数量(5-200) |
完整配置项
| 字段 | 默认 | 说明 |
|---|---|---|
provider | 无 | 预设名,自动填 imap/smtp 地址;显式写的 host/port/secure 优先 |
user | 必填 | 登录邮箱地址 |
password | 必填* | 授权码/应用专用密码;*也可用环境变量 DSH_EMAIL_PASSWORD |
senderName | 无 | 发件显示名:只改收件人看到的名称,发件地址仍是 user |
authUser | = user | 登录账号。别名 / SMTP 中继场景:user 是发件地址,这里填真正用于 IMAP/SMTP 认证的账号 |
authPassword | = password | authUser 对应的密码;只有登录账号与 user 不同、且密码也不一样时才需要 |
imap.host/port/secure | 按预设 | 收信服务器(另有 connectionTimeoutMs/socketTimeoutMs 可调超时) |
smtp.host/port/secure | 按预设 | 发信服务器 |
inboxFolder | INBOX | 收发工具默认使用的文件夹 |
sendApproval | true | 发信前弹确认(强烈建议保留) |
maxBodyChars | 20000 | email_read 正文截断上限(1000–200000) |
accounts | 无 | 具名账号表;账号级字段覆盖顶层简写 |
accountsYaml | 无 | 账号映射的 YAML 文本,由设置页的卡片编辑器写入;非空时覆盖 accounts |
clientId | 内置社区应用(见下) | OAuth2 账号的应用(客户端)ID:留空即用插件内置的公共客户端,填了则覆盖内置值(账号级也可覆盖顶层简写) |
authKind | 按 provider 派生 | 认证方式覆盖,取值 oauth2 / password。缺省时按 provider 与 IMAP 主机派生;仍能用应用密码连 Exchange Online 的混合或本地租户可钉 password。设置页卡片的「认证方式」选择器即写此键 |
serverPresets | 无 | 自定义服务商预设的 YAML 文本(键=预设名,值含 label?/imap/smtp);只存端点、不含凭证,设置页下拉会列出预设名并把端点预填进账号卡片,改预设不会重连已建立的连接 |
defaultAccount | 单账号时自动 | 工具省略 account 参数时使用的账号(多账号必填) |
downloadDir | 会话工作区下 .dsh-email-downloads(回退 $DSH_HOME/email-downloads) | email_attachment 的落盘目录;显式设置后固定 |
maxAttachmentBytes | 20 MiB | 单个附件与附件总大小上限(1024–512 MiB) |
idleTimeoutMs | 60000 | IMAP 空闲连接回收时间(连接复用,连续操作更快) |
bodySearchFallback | true | 服务器搜索无结果时,回退到客户端扫描最近邮件的正文 |
bodySearchLimit | 30 | 正文回退扫描的邮件数量(5-200) |