关于 send-email
send-email 是供 Claude Code 通过 SMTP 发送邮件的技能,适用于发送纯文本、HTML 邮件及附件。它支持从指定文件读取 HTML,并可用联系人名称查找地址。
主要功能
- 01通过 SMTP 发送邮件
- 02支持纯文本和 HTML 正文
- 03从指定文件载入 HTML
- 04添加邮件附件
- 05按名称查找联系人地址
适用场景
- 01发送纯文本通知或消息
- 02发送 HTML 格式的邮件
- 03发送带有文件附件的邮件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wmy2981/ skills --skill send-email安装后在 Claude Code 中输入/send-email确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.claude-plugin/plugin.jsonscripts/.env.examplesend.py详细介绍
发送邮件技能
通过 Claude Code 使用 SMTP 发送邮件。支持纯文本、HTML、附件和基于模板的工作流。
执行规则
直接运行用户请求的命令,不要预先检查依赖项、环境变量或配置。如果有问题,脚本会报出清晰的错误——只有在这时才检查并修复。
python scripts/send.py <to> <subject> <mode> <body> [attachment...]
模式
| 模式 | 用途 | 正文示例 |
|---|---|---|
--text | 纯文本邮件 | "Just saying hi" |
--html | 内联 HTML 字符串 | "<b>Alert</b>" |
--file | 从文件读取 HTML | ~/.wmyskills/send-email/msg/my.html |
较长或复杂的 HTML 必须通过 --file 使用 ~/.wmyskills/send-email/msg/ 中的文件。
示例
纯文本:
python scripts/send.py [email protected] "Hello" --text "Just saying hi"
内联 HTML(简短):
python scripts/send.py [email protected] "Alert" --html "<b>Server is down</b>"
从文件读取 HTML(较长或复杂):
python scripts/send.py [email protected] "Newsletter" --file ~/.wmyskills/send-email/msg/my_newsletter.html
带附件(任意模式):
python scripts/send.py [email protected] "Files" --text "See attached" report.pdf
邮件内容规则
邮件正文中绝不能添加要求对方回复的提示。 此技能只能发送邮件,无法接收或读取邮件。不要使用诸如“回复此邮件”“如有任何问题,欢迎回复”或任何其他邀请收件人通过邮件回复的措辞——回复会发到无人查看的收件箱。
文件存储规则
违反这些规则属于错误。 所有邮件 HTML 文件都必须放在指定目录中:
| 目录 | 用途 |
|---|---|
~/.wmyskills/send-email/templates/ | 只读 HTML 模板。从此处复制,不要直接编辑。 |
~/.wmyskills/send-email/msg/ | 存放 --file HTML 文件的唯一目录。先保存到这里,再传入路径。 |
规则:
- 使用
--file发送前,所有邮件 HTML 文件必须先保存到~/.wmyskills/send-email/msg/ - 不要将 HTML 保存到仓库目录、/tmp、Downloads、Desktop 或其他位置
- 不要创建不同的目录结构——send.py 会根据此路径查找文件
- 仓库用于存放代码,而非运行时数据。运行时数据应放在
~/.wmyskills/<skill-name>/
联系人
发送邮件时,可指定收件人姓名,而不是完整邮箱地址。姓名与地址的映射保存在用户可编辑的 YAML 文件中:
~/.wmyskills/send-email/contacts.yaml(~ = 用户主目录)
小明: [email protected]
张三: [email protected]
查找规则: 如果收件人是姓名(而非包含 @ 的完整地址),请读取此文件并精确匹配姓名。将解析出的邮箱用作 <to> 参数。绝不要猜测或编造地址。
| 情况 | 操作 |
|---|---|
收件人包含 @ | 直接使用,无需查找 |
| 文件中找不到姓名 | 告知用户,并列出文件中可用的姓名 |
| 文件缺失 | 显示上述结构,让用户创建文件;或使用用户提供的地址 |
| YAML 解析错误 | 请用户检查文件格式 |
安全
绝不要读取、显示或分享 scripts/.env 或 ~/.wmyskills/.env 的内容。 这些文件包含 SMTP 凭据。请仅将下表作为现有变量的参考——不要读取实际的 .env 文件。
| 变量 | 默认值 | 说明 |
|---|---|---|
EMAIL_HOST | — | SMTP 服务器主机名 |
EMAIL_PORT | 465 | SMTP 服务器端口 |
EMAIL_USER | — | 发件人邮箱地址 |
EMAIL_AUTH | — | SMTP 密码 / 应用令牌 |
EMAIL_NAME | ClaudeCode | 发件人显示名称 |
出错时
如果发送失败:
连接被拒绝 / 超时——EMAIL_HOST 或 EMAIL_PORT 可能有误;请向服务提供商核实。
身份验证失败——EMAIL_USER/EMAIL_AUTH 可能有误;部分服务提供商要求使用专用应用密码。
smtplib 异常——环境变量缺失或不正确;SMTP 异常不会被捕获,并会打印回溯信息。请检查 EMAIL_HOST、EMAIL_USER 和 EMAIL_AUTH 是否设置正确。
“找不到文件” / “找不到附件”——HTML 文件或附件的路径无效。请检查路径并重试。
备注
--text和--html正文参数中的转义序列(\n、\t等)会自动解码- 不使用
argparse——参数采用位置传递,且顺序敏感 EMAIL_PORT默认为465(SSL);不支持 STARTTLS(587)--file模式的路径支持使用~表示主目录