mcpField
S
send-email

send-email

github.com/wmy2981生产力155 次安装5 周前更新
代码仓库

关于 send-email

send-email 是供 Claude Code 通过 SMTP 发送邮件的技能,适用于发送纯文本、HTML 邮件及附件。它支持从指定文件读取 HTML,并可用联系人名称查找地址。

主要功能

  1. 01通过 SMTP 发送邮件
  2. 02支持纯文本和 HTML 正文
  3. 03从指定文件载入 HTML
  4. 04添加邮件附件
  5. 05按名称查找联系人地址

适用场景

  1. 01发送纯文本通知或消息
  2. 02发送 HTML 格式的邮件
  3. 03发送带有文件附件的邮件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wmy2981/skills --skill send-email

安装后在 Claude Code 中输入/send-email确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.claude-plugin/
plugin.json
scripts/
.env.example
send.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_PORT465SMTP 服务器端口
EMAIL_USER—发件人邮箱地址
EMAIL_AUTH—SMTP 密码 / 应用令牌
EMAIL_NAMEClaudeCode发件人显示名称

出错时

如果发送失败:

连接被拒绝 / 超时——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 模式的路径支持使用 ~ 表示主目录

评论

支持 Markdown