email-send

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 IMAP/SMTP 协议读取和发送电子邮件。支持检查新邮件/未读邮件、获取邮件内容、搜索邮箱、标记邮件为已读/未读,以及发送带附件的邮件。支持多账户配置。兼容任意 IMAP/SMTP 服务器,包括 Gmail、Outlook、163.com、vip.163.com、126.com、vip.126.com、188.com 和 vip.188.com。

IMAP/SMTP电子邮件工具.

功能概述

IMAP/SMTP电子邮件工具.是一项面向实际任务的技能,主要用于Read, search, and management mail 透過IMAP协议. . . 通过SMTP发送电子邮件. . 支持 Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, vip.188.com, 以及任何st。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
  • 实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
  • 若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

使用与执行

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

结果检查与注意事项

该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

IMAP/SMTP 邮件工具

通过 IMAP 协议读取、搜索和管理邮件;通过 SMTP 协议发送邮件。支持 Gmail、Outlook、163.com、vip.163.com、126.com、vip.126.com、188.com、vip.188.com,以及任意标准 IMAP/SMTP 服务器。

配置

运行安装脚本以安装依赖并配置您的邮箱账户:

bash setup.sh

若不使用 setup.sh 而手动执行命令,请先安装依赖:

npm install --production

配置文件存储于 ~/.config/mail-skills/.env(与 caldav-sync 技能共享,升级技能时保留不变)。若未找到共享配置,则技能依次检查:~/.config/imap-smtp-email/.env(旧版路径),然后是技能目录下的 .env 文件。

配置文件格式(共享)

# 默认账户
PROVIDER=163
USERNAME=your@163.com
PASSWORD=your_password

# 文件访问白名单(安全机制)
ALLOWED_READ_DIRS=~/Downloads,~/Documents
ALLOWED_WRITE_DIRS=~/Downloads

PROVIDER 预设值将自动填充 IMAP/SMTP 服务器设置。如需自定义服务器,请使用以下格式:

PROVIDER=custom
USERNAME=your@email.com
PASSWORD=your_password
IMAP_HOST=imap.example.com
SMTP_HOST=smtp.example.com

旧版配置文件格式

若您已存在 ~/.config/imap-smtp-email/.env,该文件将优先于共享配置被加载。其格式如下:

# 默认账户(无前缀)
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_USER=your@email.com
IMAP_PASS=your_password
IMAP_TLS=true
IMAP_REJECT_UNAUTHORIZED=true
IMAP_MAILBOX=INBOX

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your@email.com
SMTP_PASS=your_password
SMTP_FROM=your@email.com
SMTP_REJECT_UNAUTHORIZED=true

# 文件访问白名单(安全机制)
ALLOWED_READ_DIRS=~/Downloads,~/Documents
ALLOWED_WRITE_DIRS=~/Downloads

运行 bash setup.sh 可将您的旧版配置迁移至共享格式。

多账户支持

您可在同一配置文件中配置多个邮箱账户。每个额外账户的所有变量均需添加大写名称前缀。

添加账户

运行安装脚本并选择 “Add a new account”(添加新账户):

bash setup.sh

或手动向 ~/.config/mail-skills/.env 添加带前缀的变量:

# 工作账户(WORK_ 前缀)
WORK_PROVIDER=gmail
WORK_USERNAME=me@company.com
WORK_PASSWORD=app_password

使用指定账户

在命令前添加 --account 参数:

node scripts/imap.js --account work check
node scripts/smtp.js --account work send --to foo@bar.com --subject Hi --body Hello

若未指定 --account,则默认使用(无前缀的)主账户。

账户名称规则

  • 仅允许字母与数字(例如:work、163、personal2)
  • 不区分大小写:work 与 WORK 指向同一账户
  • .env 中的前缀始终为大写(例如:WORK_PROVIDER)
  • ALLOWED_READ_DIRS 和 ALLOWED_WRITE_DIRS 对所有账户全局共享(始终无前缀)

常用邮件服务器

服务商 IMAP 主机 IMAP 端口 SMTP 主机 SMTP 端口
163.com imap.163.com 993 smtp.163.com 465
vip.163.com imap.vip.163.com 993 smtp.vip.163.com 465
126.com imap.126.com 993 smtp.126.com 465
vip.126.com imap.vip.126.com 993 smtp.vip.126.com 465
188.com imap.188.com 993 smtp.188.com 465
vip.188.com imap.vip.188.com 993 smtp.vip.188.com 465
yeah.net imap.yeah.net 993 smtp.yeah.net 465
Gmail imap.gmail.com 993 smtp.gmail.com 587
Outlook outlook.office365.com 993 smtp.office365.com 587
QQ Mail imap.qq.com 993 smtp.qq.com 587
exmail.qq.com imap.exmail.qq.com 993 smtp.exmail.qq.com 465

Gmail 注意事项:

  • Gmail 不接受您的常规账户密码
  • 您必须生成一个 App Password(应用专用密码):https://myaccount.google.com/apppasswords
  • 请将生成的 16 位 App Password 用作 IMAP_PASS / SMTP_PASS
  • 要求 Google 账户已启用两步验证

163.com 注意事项:

  • 请使用 授权码(而非账户密码)
  • 请先在网页端设置中启用 IMAP/SMTP 支持

IMAP 命令(接收邮件)

check

检查新邮件或未读邮件。

node scripts/imap.js [--account ] check [--limit 10] [--mailbox INBOX] [--recent 2h]

选项说明:

  • --limit :最多返回结果数(默认:10)
  • --mailbox :要检查的邮箱(默认:INBOX)
  • --recent :仅显示最近 X 时间内的邮件(例如:30m、2h、7d)
  • --unseen:仅显示未读消息

fetch

根据 UID 获取完整邮件内容。

node scripts/imap.js [--account ] fetch  [--mailbox INBOX]

智能优先级提醒

获取邮件后,Agent 应识别可能需要您紧急处理的消息。以下类型的邮件应被标记并在终端中回显:

财务类:发票、付款通知、收据、账单

合同类:协议、签名、法律文件

待操作类:审批请求、审阅任务、截止日期、会议确认

紧急类:标为高优先级,或包含紧急性指示词(如“urgent”、“ASAP”、“立即”等)

被标记的邮件将在行首添加 [!] 前缀,便于快速扫描:

text
[!] Invoice #2024-001 from billing@company.com
[!] Urgent: Contract review needed from legal@firm.com
[!] Meeting confirmation: Q4 planning tomorrow 10am

download

下载某封邮件中的全部附件,或指定某一附件。

node scripts/imap.js [--account ] download  [--mailbox INBOX] [--dir ] [--file ]

选项说明:

  • --mailbox :邮箱(默认:INBOX)
  • --dir :输出目录(默认:当前目录)
  • --file :仅下载指定名称的附件(默认:下载全部)

search

按条件搜索邮件。

node scripts/imap.js [--account ] search [options]

选项:
  --unseen           仅未读邮件
  --seen             仅已读邮件
  --from      发件人地址包含指定字符串
  --subject    主题包含指定文本
  --recent 

mark-read / mark-unread

将一条或多条消息标记为已读或未读。

node scripts/imap.js [--account ] mark-read  [uid2 uid3...]
node scripts/imap.js [--account ] mark-unread  [uid2 uid3...]

list-mailboxes

列出所有可用邮箱/文件夹。

node scripts/imap.js [--account ] list-mailboxes

list-accounts

列出所有已配置的邮箱账户。

node scripts/imap.js list-accounts
node scripts/smtp.js list-accounts

显示账户名、邮箱地址、服务器地址及配置状态。

SMTP 命令(发送邮件)

send

通过 SMTP 发送邮件。

node scripts/smtp.js [--account ] send --to  --subject  [options]

必需参数:

  • --to :收件人(多个地址可用逗号分隔)
  • --subject :邮件主题,或使用 --subject-file

可选参数:

  • --body :纯文本正文
  • --html:将正文作为 HTML 发送
  • --body-file :从文件读取正文
  • --html-file :从文件读取 HTML 内容
  • --cc :抄送收件人
  • --bcc :密送收件人
  • --attach :附件路径(多个附件可用逗号分隔)
  • --from :覆盖默认发件人地址

示例:

# 简单纯文本邮件
node scripts/smtp.js send --to recipient@example.com --subject "Hello" --body "World"

# HTML 邮件
node scripts/smtp.js send --to recipient@example.com --subject "Newsletter" --html --body "

Welcome

" # 带附件的邮件 node scripts/smtp.js send --to recipient@example.com --subject "Report" --body "Please find attached" --attach report.pdf # 多收件人 node scripts/smtp.js send --to "a@example.com,b@example.com" --cc "c@example.com" --subject "Update" --body "Team update"

test

通过向自身发送测试邮件来验证 SMTP 连接是否正常。

node scripts/smtp.js [--account ] test

安全说明

  • 配置文件存储于 ~/.config/mail-skills/.env(或旧版路径 ~/.config/imap-smtp-email/.env),权限为 600(仅属主可读写)
  • Gmail:拒绝使用常规密码 —— 请前往 https://myaccount.google.com/apppasswords 生成 App Password
  • 163.com:请使用授权码(授权码),而非账户密码

故障排查

连接超时:

  • 确认邮件服务器正在运行且网络可达
  • 检查主机名与端口配置是否正确

认证失败:

  • 确认用户名(通常为完整邮箱地址)是否正确
  • 确认密码是否正确
  • 163.com:请使用授权码,而非账户密码
  • Gmail:常规密码无效 —— 请前往 https://myaccount.google.com/apppasswords 生成 App Password

TLS/SSL 错误:

  • 确保 IMAP_TLS / SMTP_SECURE 设置与服务器要求一致
  • 对于自签名证书:设置 IMAP_REJECT_UNAUTHORIZED=false 或 SMTP_REJECT_UNAUTHORIZED=false

相关技能

  • caldav-sync —— 基于 CalDAV 协议的日历与任务管理技能。支持 Google Calendar、iCloud、NetEase 等服务的事件、待办事项及忙闲查询管理。安装命令如下:
    npx skills add https://github.com/gzlicanyi/mail-skills -s caldav-sync
    

反馈

欢迎在 github.com/gzlicanyi/mail-skills 提交问题(Issues)或 Pull Request。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习