agentleFS
ferocknewferocknew/claude_code_public_skills/sendmail/SKILL.md

sendmail

Skill9 starsChanged 4 months agoMITView on GitHub

当用户要求"发送邮件"或需要在 JavaScript/Node.js 环境中通过 SMTP 发送邮件时使用此 skill。支持纯文本、HTML、Markdown 格式邮件,以及多收件人和附件功能。

  • Reads credentials

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

使用 Nodemailer 发送邮件

本 skill 提供使用 Nodemailer 通过 SMTP 发送邮件的完整功能。支持纯文本、HTML、Markdown 格式邮件,以及多收件人和附件功能。

可用工具

1. send_email - 发送邮件

发送邮件的主要工具,支持多收件人和附件。

参数:

  • to_emails (必需): 收件人邮箱列表,数组格式,如 ["user@example.com"]
  • subject (必需): 邮件主题
  • body (必需): 邮件正文
  • cc_emails (可选): 抄送邮箱列表
  • bcc_emails (可选): 密送邮箱列表
  • attachments (可选): 附件文件路径列表
  • sender_email (可选): 发件人邮箱
  • sender_name (可选): 发件人姓名
  • html_body (可选): 是否为 HTML 格式邮件,默认 false
  • markdown_body (可选): 邮件正文是否为 Markdown 格式,将自动转换为 HTML,默认 false

使用示例:

发送纯文本邮件:

{
  "to_emails": ["recipient@example.com"],
  "subject": "测试邮件",
  "body": "这是一封测试邮件"
}

发送 Markdown 格式邮件:

{
  "to_emails": ["recipient@example.com"],
  "subject": "项目进展报告",
  "body": "# 项目进展报告\n\n## 主要成就\n\n- 完成了用户认证功能\n- 优化了数据库性能\n\n## 代码示例\n\n```python\ndef greet():\n    return \"Hello World!\"\n```\n\n详细内容请查看附件。",
  "markdown_body": true,
  "attachments": ["/path/to/report.pdf"]
}

发送带附件和多收件人的邮件:

{
  "to_emails": ["user1@example.com", "user2@example.com"],
  "subject": "月度报告",
  "body": "请查收附件中的月度报告。",
  "cc_emails": ["manager@example.com"],
  "attachments": ["/path/to/report.pdf", "/path/to/data.xlsx"]
}

2. get_config - 获取配置信息

获取当前 SMTP 和邮件配置信息(密码会隐藏显示)。

参数: 无

3. test_smtp_connection - 测试 SMTP 连接

测试 SMTP 服务器连接和认证是否正常。

参数: 无


配置

在使用发送邮件功能之前,需要配置 SMTP 服务器信息。这些敏感信息存储在 .env 文件中,不会提交到 git 仓库。

环境变量

在 .env 文件中配置以下变量:

# SMTP 服务器配置
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password

# 默认发件人(可选)
SMTP_FROM=your-email@gmail.com
SMTP_FROM_NAME=Your Name

获取配置示例

运行以下命令获取环境变量示例:

node skill.js --config-example

常用邮箱 SMTP 配置

Gmail

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false

注意: Gmail 需要使用应用专用密码(App Password),不是登录密码。

获取应用专用密码:

  1. 访问 https://myaccount.google.com/apppasswords
  2. 选择"邮件"和"设备"(选择"其他")
  3. 生成密码并复制到 SMTP_PASSWORD

Outlook/Hotmail

SMTP_HOST=smtp.office365.com
SMTP_PORT=587
SMTP_SECURE=false

QQ 邮箱

SMTP_HOST=smtp.qq.com
SMTP_PORT=587
SMTP_SECURE=false

注意: 需要在 QQ 邮箱设置中开启 SMTP 服务,并获取授权码。

163 邮箱

SMTP_HOST=smtp.163.com
SMTP_PORT=465
SMTP_SECURE=true

运行方式

重要:运行命令前需要先进入 sendmail 目录

cd sendmail

使用命令发送邮件

# 基本邮件
node skill.js send_email --to recipient@example.com --subject "测试" --body "内容"

# HTML 邮件
node skill.js send_email --to recipient@example.com --subject "测试" --html "<h1>HTML</h1>"

# Markdown 邮件(自动转换为 HTML)
node skill.js send_email --to recipient@example.com --subject "报告" --body "# 标题\n内容" --markdown

# 多收件人
node skill.js send_email --to user1@example.com,user2@example.com --subject "报告" --body "内容"

# 带附件
node skill.js send_email --to recipient@example.com --subject "报告" --body "请查收" --attach /path/to/file.pdf

使用 JSON 配置文件发送邮件

node skill.js send_email send.json

其中 send.json 包含邮件信息:

{
  "to_emails": ["recipient@example.com"],
  "subject": "测试邮件",
  "body": "这是一封测试邮件",
  "attachments": [
    "/path/to/report.pdf"
  ]
}

获取配置信息

node skill.js get_config

测试 SMTP 连接

node skill.js test_smtp_connection

命令行参数

参数说明示例
--to收件人邮箱(多个用逗号分隔)user@example.com
--cc抄送邮箱(多个用逗号分隔)cc@example.com
--bcc密送邮箱(多个用逗号分隔)bcc@example.com
--subject邮件主题测试邮件
--body邮件正文邮件正文
--htmlHTML 内容<h1>标题</h1>
--attach附件路径(可多次指定)/path/to/file.pdf
--from发件人(覆盖默认)sender@example.com
--test测试 SMTP 连接-
--config显示当前配置-
--config-example显示配置示例-

快速开始

1. 创建 .env 文件

cd sendmail
cp .env.example .env

2. 编辑 .env 文件

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password

3. 测试 SMTP 连接

node skill.js test_smtp_connection

4. 发送测试邮件

node skill.js send_email --to recipient@example.com --subject "测试" --body "测试邮件内容"

支持的附件类型

  • 文件附件:指定文件路径
  • 多个附件:指定多个文件路径

附件示例

node skill.js --to user@example.com --subject "报告" \
  --body "请查收附件" \
  --attach report.pdf \
  --attach data.xlsx

常见问题

Q: 如何获取 Gmail 应用专用密码?

  1. 访问 https://myaccount.google.com/apppasswords
  2. 登录 Google 账户
  3. 选择"邮件"和"设备"(选择"其他")
  4. 生成密码并复制到 .env 文件中的 SMTP_PASSWORD

Q: 邮件发送失败怎么办?

检查以下几点:

  • SMTP 服务器地址和端口是否正确
  • 用户名和密码是否正确
  • 网络连接是否正常
  • 邮箱是否开启了 SMTP 服务

Q: 支持 Markdown 格式吗?

支持。在 send_email 工具中设置 markdown_body: true,正文会自动转换为 HTML 格式。

Q: 如何测试 SMTP 连接?

运行 node skill.js --test 命令即可测试 SMTP 连接和认证。


安全注意事项

  • ⚠️ 永远不要提交 .env 文件到版本控制系统
  • ⚠️ 使用应用专用密码,不要使用登录密码
  • ⚠️ 不要在公共代码中硬编码敏感信息

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.