360 Secure SkillHub
360 安全技能中心

Simple Email

通过 Node 脚本调用 IMAP 与 SMTP 服务,实现收件箱检查、邮件搜索、详情查看、已读/未读标记、邮箱列表与附件下载,以及发送纯文本、HTML、带附件及抄送/密送邮件;使用环境变量配置邮箱凭证,支持 Gmail、QQ、163、新浪、Outlook 等标准服务。

shiming-git
shiming-git
热度 74.17
最近更新 2026-05-11 17:29:14
分类:协作依赖:代码执行 / 读写文件 / 第三方 API应用场景:邮件起草 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add simple-email
Metadata
name
simple-email
description
简单易用的 IMAP/SMTP 邮件技能。支持收发邮件、查看未读邮件、搜索、标记已读/未读、下载附件。兼容 Gmail、QQ 邮箱、163、新浪等所有标准 IMAP/SMTP 服务。
homepage
https://github.com/openclaw/skills
metadata
{"openclaw":{"emoji":"📧","requires":{"env":["IMAP_HOST","IMAP_USER","IMAP_PASS","SMTP_HOST","SMTP_USER","SMTP_PASS"],"bins":["node","npm"]},"primaryEnv":"SMTP_PASS"}}

Simple Email - 简单易用的邮件技能

通过 IMAP 协议接收和管理邮件,通过 SMTP 协议发送邮件。支持所有标准 IMAP/SMTP 邮件服务,包括 Gmail、QQ 邮箱、163、新浪、Outlook 等。

🚀 快速开始

1. 安装依赖

cd skills/simple-email
npm install

2. 配置邮箱

复制配置模板并填写你的邮箱信息:

cp .env.example .env

编辑 .env 文件,填入你的邮箱配置:

# IMAP 配置(接收邮件)
IMAP_HOST=imap.sina.cn
IMAP_PORT=993
IMAP_USER=makerprogram@sina.cn
IMAP_PASS=your_password_or_auth_code
IMAP_TLS=true

# SMTP 配置(发送邮件)
SMTP_HOST=smtp.sina.cn
SMTP_PORT=465
SMTP_SECURE=true
SMTP_USER=makerprogram@sina.cn
SMTP_PASS=your_password_or_auth_code
SMTP_FROM=小智助理 <makerprogram@sina.cn>

# 安全配置(文件读写权限)
ALLOWED_READ_DIRS=C:\Users\Administrator\.openclaw\workspace
ALLOWED_WRITE_DIRS=C:\Users\Administrator\.openclaw\workspace

3. 测试连接

# 测试 SMTP 发送
node scripts/smtp.js test

# 检查收件箱
node scripts/imap.js check --limit 5

📥 接收邮件(IMAP)

检查新邮件

# 检查最新 10 封邮件
node scripts/imap.js check

# 检查最新 5 封邮件
node scripts/imap.js check --limit 5

# 只检查未读邮件
node scripts/imap.js check --unseen

# 检查最近 2 小时的邮件
node scripts/imap.js check --recent 2h

# 检查指定邮箱
node scripts/imap.js check --mailbox INBOX

搜索邮件

# 搜索未读邮件
node scripts/imap.js search --unseen

# 按发件人搜索
node scripts/imap.js search --from "boss@example.com"

# 按主题搜索
node scripts/imap.js search --subject "报告"

# 搜索最近 7 天的邮件
node scripts/imap.js search --recent 7d

# 组合搜索
node scripts/imap.js search --unseen --from "boss@example.com" --limit 10

查看邮件详情

# 查看指定 UID 的邮件
node scripts/imap.js fetch <uid>

标记已读/未读

# 标记为已读
node scripts/imap.js mark-read <uid1> <uid2> ...

# 标记为未读
node scripts/imap.js mark-unread <uid1> <uid2> ...

下载附件

# 下载邮件的所有附件
node scripts/imap.js download <uid>

# 下载到指定目录
node scripts/imap.js download <uid> --dir ./attachments

# 下载指定附件
node scripts/imap.js download <uid> --file report.pdf

列出所有邮箱

node scripts/imap.js list-mailboxes

📤 发送邮件(SMTP)

发送纯文本邮件

node scripts/smtp.js send --to recipient@example.com --subject "你好" --body "这是一封测试邮件"

发送 HTML 邮件

node scripts/smtp.js send --to recipient@example.com --subject "HTML 邮件" --html --body "<h1>你好</h1><p>这是<strong>HTML</strong>格式的邮件</p>"

发送带附件的邮件

node scripts/smtp.js send --to recipient@example.com --subject "报告" --body "请查收附件" --attach ./report.pdf

发送给多人

# 多个收件人
node scripts/smtp.js send --to "a@example.com,b@example.com" --subject "通知" --body "大家好"

# 抄送
node scripts/smtp.js send --to recipient@example.com --cc "cc1@example.com,cc2@example.com" --subject "抄送" --body "你好"

# 密送
node scripts/smtp.js send --to recipient@example.com --bcc "bcc@example.com" --subject "密送" --body "你好"

从文件读取内容

# 从文件读取邮件正文
node scripts/smtp.js send --to recipient@example.com --subject "报告" --body-file ./message.txt

# 从文件读取 HTML 内容
node scripts/smtp.js send --to recipient@example.com --subject "新闻稿" --html --html-file ./newsletter.html

# 从文件读取主题
node scripts/smtp.js send --to recipient@example.com --subject-file ./subject.txt --body-file ./body.txt

📋 常用邮箱服务器配置

服务商 IMAP 主机 IMAP 端口 SMTP 主机 SMTP 端口 说明
新浪邮箱 imap.sina.cn 993 smtp.sina.cn 465 使用授权码
QQ 邮箱 imap.qq.com 993 smtp.qq.com 587 使用授权码
163 邮箱 imap.163.com 993 smtp.163.com 465 使用授权码
126 邮箱 imap.126.com 993 smtp.126.com 465 使用授权码
Gmail imap.gmail.com 993 smtp.gmail.com 587 使用应用专用密码
Outlook outlook.office365.com 993 smtp.office365.com 587 使用应用密码

⚠️ 重要提示

Gmail 用户

163/QQ/新浪邮箱用户

  • 使用 授权码,不是账户密码
  • 需要在网页版邮箱设置中先启用 IMAP/SMTP 服务
  • 授权码在邮箱设置 → 账户安全中获取

🔒 安全建议

  1. 不要提交 .env 文件到版本控制系统
  2. 使用授权码/应用密码,而不是账户密码
  3. 启用 SSL/TLS 加密连接
  4. 定期更换密码
  5. 限制 ALLOWED_READ_DIRS 和 ALLOWED_WRITE_DIRS 到必要的目录

🐛 常见问题

认证失败

  • 检查用户名是否为完整邮箱地址
  • 确认使用授权码/应用密码,而非账户密码
  • 检查是否已启用 IMAP/SMTP 服务

连接超时

  • 检查服务器地址和端口是否正确
  • 确认网络连接正常
  • 检查防火墙设置

TLS/SSL 错误

  • 确认 IMAP_TLS 和 SMTP_SECURE 设置正确
  • 自签名证书可设置 IMAP_REJECT_UNAUTHORIZED=false

📝 命令速查

IMAP 命令

node scripts/imap.js check [--limit N] [--unseen] [--recent 2h]
node scripts/imap.js search [--unseen] [--from xxx] [--subject xxx]
node scripts/imap.js fetch <uid>
node scripts/imap.js mark-read <uid> [uid2 ...]
node scripts/imap.js mark-unread <uid> [uid2 ...]
node scripts/imap.js download <uid> [--dir ./path]
node scripts/imap.js list-mailboxes

SMTP 命令

node scripts/smtp.js send --to <email> --subject <text> --body <text>
node scripts/smtp.js send --to <email> --subject <text> --html --body "<html>..."
node scripts/smtp.js send --to <email> --subject <text> --attach <file>
node scripts/smtp.js test

📄 许可证

MIT License