{
  "schemaVersion": "1.0",
  "item": {
    "slug": "send-email-tool",
    "name": "Send Email Tool",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/flyingtimes/send-email-tool",
    "canonicalUrl": "https://clawhub.ai/flyingtimes/send-email-tool",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/send-email-tool",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=send-email-tool",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "examples/README.md",
      "examples/inline-image-test.html",
      "examples/markdown-auto-test.md",
      "scripts/send_email.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/send-email-tool"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/send-email-tool",
    "agentPageUrl": "https://openagent3.xyz/skills/send-email-tool/agent",
    "manifestUrl": "https://openagent3.xyz/skills/send-email-tool/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/send-email-tool/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Send Email",
        "body": "通过 SMTP 发送邮件的工具，支持 keyring 密钥管理。"
      },
      {
        "title": "功能",
        "body": "✅ 支持 SMTP 邮件发送（Gmail、QQ 邮箱、163 邮箱等）\n✅ 支持纯文本和 HTML 格式邮件\n✅ 支持模板渲染（使用 --template 参数，支持自定义模板）\n✅ 支持内嵌图片（图片直接显示在邮件正文中，不是链接）\n✅ 自动检测 Markdown 格式（含图片自动嵌入）\n✅ 支持附件（文档、图片等）\n✅ 支持抄送（CC）和密送（BCC）\n✅ 配置持久化，避免重复输入\n✅ 密钥管理：支持 keyring 安全存储密码（推荐）"
      },
      {
        "title": "⚠️ 重要：密码安全",
        "body": "本技能强制使用 keyring 管理发件人邮箱和密码，避免敏感信息暴露在命令行或上下文中。"
      },
      {
        "title": "安装 keyring",
        "body": "pip install keyring\n\n如果 keyring 未安装，脚本会自动使用备用存储方案（base64 编码的本地文件）。"
      },
      {
        "title": "首次使用：保存发件人邮箱",
        "body": "在发送邮件前，必须先保存发件人邮箱到 keyring：\n\n# 保存发件人邮箱（会提示输入）\npython3 send_email.py username --save --email your-email@gd.chinamobile.com\n\n# 或只运行 --save，然后交互输入\npython3 send_email.py username --save"
      },
      {
        "title": "保存密码",
        "body": "# 保存密码（会提示输入）\npython3 send_email.py password --save"
      },
      {
        "title": "删除密钥",
        "body": "# 删除发件人邮箱\npython3 send_email.py username --delete\n\n# 删除密码\npython3 send_email.py password --delete"
      },
      {
        "title": "查看密钥状态",
        "body": "# 查看发件人邮箱\npython3 send_email.py username\n\n# 查看密码状态\npython3 send_email.py password"
      },
      {
        "title": "⚠️ 安全提醒",
        "body": "不要在命令行参数中传递邮箱或密码\n不要使用 --email 参数直接指定发件人\n始终通过 username --save 和 password --save 命令管理密钥\n邮箱和密码会自动从 keyring 读取，无需每次输入\n默认邮箱：user@gd.chinamobile.com"
      },
      {
        "title": "0. 安装依赖（可选）",
        "body": "推荐安装 markdown 库以支持 Markdown 自动转换：\n\npip install markdown keyring\n\n如果不安装 markdown 库，脚本仍可正常发送纯文本和 HTML 邮件，但无法自动转换 Markdown。"
      },
      {
        "title": "1. 首次配置",
        "body": "cd $CLAWD/skills/send-email/scripts\n\n# 配置 SMTP 服务器（中国移动邮箱默认配置）\npython3 send_email.py smtp --host smtp.gd.chinamobile.com --port 465 --no-tls\n\n# 配置发件人名称\npython3 send_email.py sender --name \"Your Name\"\n\n# 保存发件人邮箱到 keyring\npython3 send_email.py username --save --email your-email@gd.chinamobile.com\n\n# 查看当前配置\npython3 send_email.py config\n\n中国移动邮箱默认配置：\n\n配置项值SMTP 服务器smtp.gd.chinamobile.com端口465 (SSL)TLS❌ (使用 SSL)默认邮箱user@gd.chinamobile.com\n\n重要提示： 如果使用 Gmail，需要生成「应用专用密码」（App Password），而不是使用账户密码。"
      },
      {
        "title": "2. 发送邮件",
        "body": "首次使用：保存密码\n\npython3 send_email.py password --save\n# 按提示输入密码\n\n基础发送（纯文本）\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"邮件主题\" \\\n  --body \"邮件正文内容\"\n\nHTML 邮件\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"HTML 邮件\" \\\n  --body \"<h1>标题</h1><p>正文内容</p>\" \\\n  --html\n\n带附件的邮件\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"带附件的邮件\" \\\n  --body \"请查看附件\" \\\n  --attachments \"/path/to/file1.pdf\" \"/path/to/file2.png\"\n\n抄送和密送\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --cc cc1@example.com cc2@example.com \\\n  --bcc bcc@example.com \\\n  --subject \"多人邮件\" \\\n  --body \"邮件正文\"\n\n自动检测 Markdown + 内嵌图片（最强推荐）⭐⭐⭐\n\n功能： 自动检测 Markdown 格式，自动提取并内嵌图片，无需手动指定！\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"Markdown 邮件（自动检测图片）\" \\\n  --body \"# 标题\\n\\n![图片说明](/path/to/image.png)\\n\\n这是正文内容\"\n\n工作流程：\n\n脚本自动检测 Markdown 格式\n自动提取 Markdown 中的图片路径（支持 ![alt](path) 语法）\n自动将 Markdown 转换为 HTML\n自动将图片转换为 CID 引用（src=\"cid:image\"）\n图片直接显示在邮件正文中\n\n示例：发送包含多张图片的 Markdown\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品报告\" \\\n  --body \"$(cat report.md)\"\n\n其中 report.md 内容：\n\n# 产品更新报告\n\n## 新功能展示\n\n这是第一个功能截图：\n\n![功能1](/path/to/screenshot1.png)\n\n这是第二个功能截图：\n\n![功能2](/path/to/screenshot2.png)\n\n## 总结\n\n如有问题，请联系我们。\n\n结果： 收件人会收到一封格式美观的 HTML 邮件，图片直接显示在正文中！\n\n手动指定内嵌图片\n\n功能： 图片直接显示在邮件正文中，不是链接。使用 CID（Content-ID）技术，兼容所有主流邮件客户端。\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"带内嵌图片的邮件\" \\\n  --html \\\n  --body \"<h1>标题</h1><p>正文内容</p><img src='/path/to/image.png'>\" \\\n  --inline-images \"/path/to/image.png\"\n\n工作原理：\n\n脚本会自动将 HTML 中的图片路径替换为 CID 引用（src=\"cid:filename\"）\n图片作为内嵌资源添加到邮件中\n邮件客户端会直接显示图片，不需要点击链接\n\n多张图片示例：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品截图\" \\\n  --html \\\n  --body \"<h1>产品展示</h1><img src='/path/to/screenshot1.png'><br><img src='/path/to/screenshot2.png'>\" \\\n  --inline-images \"/path/to/screenshot1.png\" \"/path/to/screenshot2.png\"\n\n重要提示：\n\n--inline-images 必须配合 --html 参数使用（如未指定，会自动启用）\n图片路径必须与 HTML 中的 src 属性完全一致\n支持 PNG、JPG、JPEG、GIF、WebP 格式\nCID 会自动使用文件名（去掉扩展名），例如 image.png → cid:image"
      },
      {
        "title": "发送命令 (send)",
        "body": "参数说明必填--to收件人邮箱✅--to-name收件人名称❌--subject邮件主题✅--body邮件正文✅--html使用 HTML 格式❌--template使用指定模板渲染邮件（模板文件名）❌--title邮件标题（模板中使用，默认：\"邮件摘要\"）❌--attachments附件路径（可多个）❌--inline-images内嵌图片路径（可多个，仅 HTML 模式）❌--cc抄送邮箱（可多个）❌--bcc密送邮箱（可多个）❌"
      },
      {
        "title": "发件人邮箱管理命令 (username)",
        "body": "参数说明--save保存发件人邮箱到 keyring（会提示输入）--delete删除保存的发件人邮箱"
      },
      {
        "title": "密码管理命令 (password)",
        "body": "参数说明--save保存密码到 keyring（会提示输入）--delete删除保存的密码"
      },
      {
        "title": "配置文件",
        "body": "配置文件保存在：~/.send_email_config.json\n\n示例配置：\n\n{\n  \"smtp\": {\n    \"host\": \"smtp.gd.chinamobile.com\",\n    \"port\": 465,\n    \"use_tls\": false\n  },\n  \"sender\": {\n    \"name\": \"Your Name\"\n  }\n}\n\n注意： 发件人邮箱通过 username --save 命令存储在 keyring 中，不在配置文件中。"
      },
      {
        "title": "示例 1: 发送 Markdown 邮件（自动检测并内嵌图片）⭐",
        "body": "创建一个 Markdown 文件 newsletter.md：\n\n# 今日新闻摘要\n\n## 科技头条\n\nAI 技术持续突破，以下是最新进展：\n\n![AI 演示](/path/to/ai-demo.png)\n\n## 产品更新\n\n新功能界面展示：\n\n![新功能](/path/to/new-feature.png)\n\n---\n\n如需了解更多，请访问我们的官网。\n\n发送邮件（超级简单，无需指定任何图片参数！）：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"今日新闻摘要\" \\\n  --body \"$(cat newsletter.md)\"\n\n结果： 脚本会自动：\n\n检测到 Markdown 格式\n提取 2 张图片路径\n转换为 HTML 并替换图片为 CID 引用\n内嵌图片到邮件中\n发送格式美观的 HTML 邮件"
      },
      {
        "title": "示例 2: 发送带内嵌图片的 HTML 邮件（手动指定）",
        "body": "假设你有两张产品截图：\n\ncd ~/clawd/skills/send-email/scripts\n\n# 准备 HTML 内容\ncat > email_content.html << 'EOF'\n<h1>产品更新通知</h1>\n<p>大家好！</p>\n<p>这是我们最新的产品截图：</p>\n<img src=\"/Users/clark/Pictures/screenshot1.png\" style=\"max-width: 600px; border-radius: 8px;\">\n<p>第二个功能展示：</p>\n<img src=\"/Users/clark/Pictures/screenshot2.png\" style=\"max-width: 600px; border-radius: 8px;\">\n<p>如有问题，请随时联系我们！</p>\n<p>Best regards,<br>产品团队</p>\nEOF\n\n# 发送邮件\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品更新 - 新功能截图\" \\\n  --html \\\n  --body \"$(cat email_content.html)\" \\\n  --inline-images \"/Users/clark/Pictures/screenshot1.png\" \"/Users/clark/Pictures/screenshot2.png\"\n\n结果： 收件人打开邮件后，图片会直接显示在邮件正文中，不需要点击链接。"
      },
      {
        "title": "示例 3: 手动指定内嵌图片（HTML 模式）",
        "body": "假设你有现成的 HTML 内容：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品截图\" \\\n  --html \\\n  --body \"<h1>产品展示</h1><img src='/path/to/image.png'>\" \\\n  --inline-images \"/path/to/image.png\"\n\n何时使用手动指定：\n\n已有现成的 HTML 内容\n不想使用 Markdown 转换\n需要精确控制 CID 引用"
      },
      {
        "title": "示例 4: 结合 X 推文技能（自动工作流）⚡",
        "body": "假设你已经使用 crawl-from-x 和 translate 技能抓取并翻译了 X 推文，结果保存在 posts_zh.md。\n\n现在发送邮件（一键搞定！）：\n\npython3 send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat /path/to/posts_zh.md)\"\n\n完整工作流：\n\n# 步骤 1: 抓取 X 推文\ncrawl-from-x 抓取\n\n# 步骤 2: 翻译为中文\n使用 translate 技能翻译最新的文件\n\n# 步骤 3: 发送邮件（自动检测 Markdown + 图片）\npython3 send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat $CLAWD/skills/crawl-from-x/results/*_zh.md)\"\n\n自动化脚本：\n\n创建 send-x-news.sh：\n\n#!/bin/bash\ncd ~/clawd/skills/crawl-from-x/scripts\npython3 craw_hot.py crawl\n\nLATEST_MD=$(ls -t ~/clawd/skills/crawl-from-x/results/*.md | head -1)\npython3 ~/clawd/skills/send-email/scripts/send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"$(date +'%Y-%m-%d') X 推文摘要\" \\\n  --body \"$(cat $LATEST_MD)\"\n\n添加到 cron：\n\ncrontab -e\n# 添加：每天早上 8:00 执行\n0 8 * * * ~/clawd/skills/send-email/scripts/send-x-news.sh"
      },
      {
        "title": "使用模板渲染邮件",
        "body": "使用 --template 参数可以让邮件内容使用指定的模板进行渲染，提供更美观的视觉效果。\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat posts_zh.md)\" \\\n  --template default \\\n  --title \"X 帖子摘要\"\n\n参数说明：\n\n--template：模板文件名（不含 .html 扩展名）\n\n默认模板：default（仿照 x.com 样式）\n模板位置：templates/ 目录\n\n\n--title：邮件标题（模板中使用，默认：\"邮件摘要\"）"
      },
      {
        "title": "默认模板（default）",
        "body": "send-email 技能内置了一个名为 default 的默认模板，具有以下特点：\n\n设计风格：现代、简约、商务、大气\n视觉参考：仿照 x.com 网页样式\n布局：卡片式布局，圆角边框\n配色：\n\n背景：白色（#ffffff）\n主要文字：深色（#0f1419）\n次要文字：灰色（#536471）\n链接：蓝色（#1d9bf0）\n边框：浅灰色（#eff3f4）\n\n\n响应式：适配移动端和桌面端\n支持内容：文字、图片、链接\n\n模板变量：\n\n{{title}}：邮件标题（通过 --title 参数设置）\n{{subtitle}}：副标题（自动生成时间戳）\n{{content}}：邮件正文内容"
      },
      {
        "title": "自定义模板",
        "body": "如果默认模板不满足需求，可以创建自定义模板：\n\n在 templates/ 目录下创建新的 HTML 文件\n使用 {{title}}、{{subtitle}}、{{content}} 作为变量占位符\n使用时指定模板名称：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"每周报告\" \\\n  --body \"$(cat report.md)\" \\\n  --template my-template\n\n模板示例： templates/default.html\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>{{title}}</title>\n    <style>\n        /* 自定义样式 */\n        body { font-family: Arial, sans-serif; }\n        .container { max-width: 600px; margin: 0 auto; }\n        /* ... */\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <h1>{{title}}</h1>\n        <p class=\"subtitle\">{{subtitle}}</p>\n        <div class=\"content\">\n            {{content}}\n        </div>\n    </div>\n</body>\n</html>"
      },
      {
        "title": "模板 + Markdown 自动检测",
        "body": "模板功能与 Markdown 自动检测完全兼容：\n\n# 检测 Markdown → 转换为 HTML → 应用模板 → 发送\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"X 推文摘要\" \\\n  --body \"$(cat posts_zh.md)\" \\\n  --template default\n\n处理流程：\n\n检测 Markdown 格式\n提取并内嵌图片\n转换为 HTML\n应用模板\n发送邮件"
      },
      {
        "title": "模板目录结构",
        "body": "send-email/\n├── scripts/\n│   └── send_email.py\n└── templates/\n    ├── default.html       # 默认模板（仿照 x.com）\n    ├── my-template.html   # 自定义模板 1\n    └── weekly.html       # 自定义模板 2"
      },
      {
        "title": "使用建议",
        "body": "密钥管理（强制）： 首次使用前必须运行 python send_email.py username --save 和 python send_email.py password --save 分别保存发件人邮箱和密码。这些信息会安全存储在 keyring 中，不会暴露在命令行或上下文中。\n\n\n不要传递密钥： 发送邮件时不要使用 --email 或 --password 参数，这些信息会自动从 keyring 读取。这是为了保护密钥安全。\n\n\n中国移动邮箱： 默认配置为 smtp.gd.chinamobile.com:465（SSL），默认发件人邮箱为 user@gd.chinamobile.com。\n\n\nMarkdown 自动检测（推荐）：\n\n脚本会自动检测 Markdown 格式（标题、粗体、列表、图片等）\n自动提取 Markdown 中的图片并内嵌到邮件中\n无需手动指定 --inline-images 或 --html 参数\n如果不想自动转换，使用 --html 参数强制指定为纯 HTML 模式\n\n\n\n内嵌图片：\n\n支持 Markdown 语法：![alt](path/to/image.png)\n支持 HTML 语法：<img src=\"path/to/image.png\">\n图片会自动转换为 CID 引用，直接显示在邮件正文中\n建议压缩图片大小（每张 < 500KB），避免邮件过大被拒收\nCID 使用文件名（去掉扩展名），例如 myphoto.png → cid:myphoto\n\n\n\n图片路径：\n\n使用绝对路径（推荐）\n确保图片文件存在且可读\n跳过 http:// 和 https:// 开头的图片链接（外链）\n\n\n\n附件路径： 使用绝对路径或相对于执行目录的路径\n\n\n测试： 首次使用时，建议先发送测试邮件给自己\n\n\nkeyring 备用方案： 如果 keyring 不可用，密钥会保存在 ~/.send_email_password 和 ~/.send_email_username（base64 编码），文件权限为 600。注意这不是加密，仅避免明文存储。"
      },
      {
        "title": "安全流程",
        "body": "1. 首次配置（中国移动邮箱）：\n   - python send_email.py smtp --host smtp.gd.chinamobile.com --port 465 --no-tls\n   - python send_email.py sender --name \"Your Name\"\n   - python send_email.py username --save --email your-email@gd.chinamobile.com\n   - python send_email.py password --save  ← 输入密码\n\n2. 后续发送：\n   - python send_email.py send --to to@example.com --subject \"...\" --body \"...\"\n     邮箱和密码自动从 keyring 读取"
      },
      {
        "title": "Markdown 自动检测",
        "body": "脚本会检测以下 Markdown 语法：\n\n标题：# 标题\n粗体：**粗体**\n代码块：```\n列表：- 列表项 或 1. 列表项\n链接：[文本](url)\n图片：![alt](path) ⭐\n\n检测到以上任一语法，会自动转换为 HTML 格式。"
      },
      {
        "title": "图片自动提取",
        "body": "支持两种语法：\n\nMarkdown 语法：\n\n![图片说明](/path/to/image.png)\n\nHTML 语法：\n\n<img src=\"/path/to/image.png\">\n\n脚本会：\n\n自动提取所有图片路径\n跳过 http:// 和 https:// 开头的链接\n将本地图片路径转换为 CID 引用\n内嵌到邮件中"
      },
      {
        "title": "CID 工作原理",
        "body": "图片作为 MIME part 添加到邮件\n每张图片分配 Content-ID（例如 cid:myimage）\nHTML 中使用 <img src=\"cid:myimage\"> 引用\n邮件客户端解析并直接显示图片"
      },
      {
        "title": "支持的图片格式",
        "body": "PNG\nJPG / JPEG\nGIF\nWebP"
      },
      {
        "title": "依赖项",
        "body": "必须： Python 3.7+\n推荐： keyring（密钥管理）\n推荐： markdown（Markdown 自动转换）\n\n安装依赖：\n\npip install keyring markdown"
      },
      {
        "title": "邮件大小限制",
        "body": "大多数邮件服务器限制：10-25 MB\n建议：每张图片 < 500KB\n建议：总邮件大小 < 5 MB\n\n如果邮件过大，可能被拒收或放入垃圾邮件。"
      }
    ],
    "body": "Send Email\n\n通过 SMTP 发送邮件的工具，支持 keyring 密钥管理。\n\n功能\n✅ 支持 SMTP 邮件发送（Gmail、QQ 邮箱、163 邮箱等）\n✅ 支持纯文本和 HTML 格式邮件\n✅ 支持模板渲染（使用 --template 参数，支持自定义模板）\n✅ 支持内嵌图片（图片直接显示在邮件正文中，不是链接）\n✅ 自动检测 Markdown 格式（含图片自动嵌入）\n✅ 支持附件（文档、图片等）\n✅ 支持抄送（CC）和密送（BCC）\n✅ 配置持久化，避免重复输入\n✅ 密钥管理：支持 keyring 安全存储密码（推荐）\n密钥管理\n⚠️ 重要：密码安全\n\n本技能强制使用 keyring 管理发件人邮箱和密码，避免敏感信息暴露在命令行或上下文中。\n\n安装 keyring\npip install keyring\n\n\n如果 keyring 未安装，脚本会自动使用备用存储方案（base64 编码的本地文件）。\n\n首次使用：保存发件人邮箱\n\n在发送邮件前，必须先保存发件人邮箱到 keyring：\n\n# 保存发件人邮箱（会提示输入）\npython3 send_email.py username --save --email your-email@gd.chinamobile.com\n\n# 或只运行 --save，然后交互输入\npython3 send_email.py username --save\n\n保存密码\n# 保存密码（会提示输入）\npython3 send_email.py password --save\n\n删除密钥\n# 删除发件人邮箱\npython3 send_email.py username --delete\n\n# 删除密码\npython3 send_email.py password --delete\n\n查看密钥状态\n# 查看发件人邮箱\npython3 send_email.py username\n\n# 查看密码状态\npython3 send_email.py password\n\n⚠️ 安全提醒\n不要在命令行参数中传递邮箱或密码\n不要使用 --email 参数直接指定发件人\n始终通过 username --save 和 password --save 命令管理密钥\n邮箱和密码会自动从 keyring 读取，无需每次输入\n默认邮箱：user@gd.chinamobile.com\n快速开始\n0. 安装依赖（可选）\n\n推荐安装 markdown 库以支持 Markdown 自动转换：\n\npip install markdown keyring\n\n\n如果不安装 markdown 库，脚本仍可正常发送纯文本和 HTML 邮件，但无法自动转换 Markdown。\n\n1. 首次配置\ncd $CLAWD/skills/send-email/scripts\n\n# 配置 SMTP 服务器（中国移动邮箱默认配置）\npython3 send_email.py smtp --host smtp.gd.chinamobile.com --port 465 --no-tls\n\n# 配置发件人名称\npython3 send_email.py sender --name \"Your Name\"\n\n# 保存发件人邮箱到 keyring\npython3 send_email.py username --save --email your-email@gd.chinamobile.com\n\n# 查看当前配置\npython3 send_email.py config\n\n\n中国移动邮箱默认配置：\n\n配置项\t值\nSMTP 服务器\tsmtp.gd.chinamobile.com\n端口\t465 (SSL)\nTLS\t❌ (使用 SSL)\n默认邮箱\tuser@gd.chinamobile.com\n\n重要提示： 如果使用 Gmail，需要生成「应用专用密码」（App Password），而不是使用账户密码。\n\n2. 发送邮件\n首次使用：保存密码\npython3 send_email.py password --save\n# 按提示输入密码\n\n基础发送（纯文本）\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"邮件主题\" \\\n  --body \"邮件正文内容\"\n\nHTML 邮件\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"HTML 邮件\" \\\n  --body \"<h1>标题</h1><p>正文内容</p>\" \\\n  --html\n\n带附件的邮件\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"带附件的邮件\" \\\n  --body \"请查看附件\" \\\n  --attachments \"/path/to/file1.pdf\" \"/path/to/file2.png\"\n\n抄送和密送\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --cc cc1@example.com cc2@example.com \\\n  --bcc bcc@example.com \\\n  --subject \"多人邮件\" \\\n  --body \"邮件正文\"\n\n自动检测 Markdown + 内嵌图片（最强推荐）⭐⭐⭐\n\n功能： 自动检测 Markdown 格式，自动提取并内嵌图片，无需手动指定！\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"Markdown 邮件（自动检测图片）\" \\\n  --body \"# 标题\\n\\n![图片说明](/path/to/image.png)\\n\\n这是正文内容\"\n\n\n工作流程：\n\n脚本自动检测 Markdown 格式\n自动提取 Markdown 中的图片路径（支持 ![alt](path) 语法）\n自动将 Markdown 转换为 HTML\n自动将图片转换为 CID 引用（src=\"cid:image\"）\n图片直接显示在邮件正文中\n\n示例：发送包含多张图片的 Markdown\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品报告\" \\\n  --body \"$(cat report.md)\"\n\n\n其中 report.md 内容：\n\n# 产品更新报告\n\n## 新功能展示\n\n这是第一个功能截图：\n\n![功能1](/path/to/screenshot1.png)\n\n这是第二个功能截图：\n\n![功能2](/path/to/screenshot2.png)\n\n## 总结\n\n如有问题，请联系我们。\n\n\n结果： 收件人会收到一封格式美观的 HTML 邮件，图片直接显示在正文中！\n\n手动指定内嵌图片\n\n功能： 图片直接显示在邮件正文中，不是链接。使用 CID（Content-ID）技术，兼容所有主流邮件客户端。\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"带内嵌图片的邮件\" \\\n  --html \\\n  --body \"<h1>标题</h1><p>正文内容</p><img src='/path/to/image.png'>\" \\\n  --inline-images \"/path/to/image.png\"\n\n\n工作原理：\n\n脚本会自动将 HTML 中的图片路径替换为 CID 引用（src=\"cid:filename\"）\n图片作为内嵌资源添加到邮件中\n邮件客户端会直接显示图片，不需要点击链接\n\n多张图片示例：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品截图\" \\\n  --html \\\n  --body \"<h1>产品展示</h1><img src='/path/to/screenshot1.png'><br><img src='/path/to/screenshot2.png'>\" \\\n  --inline-images \"/path/to/screenshot1.png\" \"/path/to/screenshot2.png\"\n\n\n重要提示：\n\n--inline-images 必须配合 --html 参数使用（如未指定，会自动启用）\n图片路径必须与 HTML 中的 src 属性完全一致\n支持 PNG、JPG、JPEG、GIF、WebP 格式\nCID 会自动使用文件名（去掉扩展名），例如 image.png → cid:image\n参数说明\n发送命令 (send)\n参数\t说明\t必填\n--to\t收件人邮箱\t✅\n--to-name\t收件人名称\t❌\n--subject\t邮件主题\t✅\n--body\t邮件正文\t✅\n--html\t使用 HTML 格式\t❌\n--template\t使用指定模板渲染邮件（模板文件名）\t❌\n--title\t邮件标题（模板中使用，默认：\"邮件摘要\"）\t❌\n--attachments\t附件路径（可多个）\t❌\n--inline-images\t内嵌图片路径（可多个，仅 HTML 模式）\t❌\n--cc\t抄送邮箱（可多个）\t❌\n--bcc\t密送邮箱（可多个）\t❌\n发件人邮箱管理命令 (username)\n参数\t说明\n--save\t保存发件人邮箱到 keyring（会提示输入）\n--delete\t删除保存的发件人邮箱\n密码管理命令 (password)\n参数\t说明\n--save\t保存密码到 keyring（会提示输入）\n--delete\t删除保存的密码\n配置文件\n\n配置文件保存在：~/.send_email_config.json\n\n示例配置：\n\n{\n  \"smtp\": {\n    \"host\": \"smtp.gd.chinamobile.com\",\n    \"port\": 465,\n    \"use_tls\": false\n  },\n  \"sender\": {\n    \"name\": \"Your Name\"\n  }\n}\n\n\n注意： 发件人邮箱通过 username --save 命令存储在 keyring 中，不在配置文件中。\n\n完整示例\n示例 1: 发送 Markdown 邮件（自动检测并内嵌图片）⭐\n\n创建一个 Markdown 文件 newsletter.md：\n\n# 今日新闻摘要\n\n## 科技头条\n\nAI 技术持续突破，以下是最新进展：\n\n![AI 演示](/path/to/ai-demo.png)\n\n## 产品更新\n\n新功能界面展示：\n\n![新功能](/path/to/new-feature.png)\n\n---\n\n如需了解更多，请访问我们的官网。\n\n\n发送邮件（超级简单，无需指定任何图片参数！）：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"今日新闻摘要\" \\\n  --body \"$(cat newsletter.md)\"\n\n\n结果： 脚本会自动：\n\n检测到 Markdown 格式\n提取 2 张图片路径\n转换为 HTML 并替换图片为 CID 引用\n内嵌图片到邮件中\n发送格式美观的 HTML 邮件\n示例 2: 发送带内嵌图片的 HTML 邮件（手动指定）\n\n假设你有两张产品截图：\n\ncd ~/clawd/skills/send-email/scripts\n\n# 准备 HTML 内容\ncat > email_content.html << 'EOF'\n<h1>产品更新通知</h1>\n<p>大家好！</p>\n<p>这是我们最新的产品截图：</p>\n<img src=\"/Users/clark/Pictures/screenshot1.png\" style=\"max-width: 600px; border-radius: 8px;\">\n<p>第二个功能展示：</p>\n<img src=\"/Users/clark/Pictures/screenshot2.png\" style=\"max-width: 600px; border-radius: 8px;\">\n<p>如有问题，请随时联系我们！</p>\n<p>Best regards,<br>产品团队</p>\nEOF\n\n# 发送邮件\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品更新 - 新功能截图\" \\\n  --html \\\n  --body \"$(cat email_content.html)\" \\\n  --inline-images \"/Users/clark/Pictures/screenshot1.png\" \"/Users/clark/Pictures/screenshot2.png\"\n\n\n结果： 收件人打开邮件后，图片会直接显示在邮件正文中，不需要点击链接。\n\n示例 3: 手动指定内嵌图片（HTML 模式）\n\n假设你有现成的 HTML 内容：\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"产品截图\" \\\n  --html \\\n  --body \"<h1>产品展示</h1><img src='/path/to/image.png'>\" \\\n  --inline-images \"/path/to/image.png\"\n\n\n何时使用手动指定：\n\n已有现成的 HTML 内容\n不想使用 Markdown 转换\n需要精确控制 CID 引用\n示例 4: 结合 X 推文技能（自动工作流）⚡\n\n假设你已经使用 crawl-from-x 和 translate 技能抓取并翻译了 X 推文，结果保存在 posts_zh.md。\n\n现在发送邮件（一键搞定！）：\n\npython3 send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat /path/to/posts_zh.md)\"\n\n\n完整工作流：\n\n# 步骤 1: 抓取 X 推文\ncrawl-from-x 抓取\n\n# 步骤 2: 翻译为中文\n使用 translate 技能翻译最新的文件\n\n# 步骤 3: 发送邮件（自动检测 Markdown + 图片）\npython3 send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat $CLAWD/skills/crawl-from-x/results/*_zh.md)\"\n\n\n自动化脚本：\n\n创建 send-x-news.sh：\n\n#!/bin/bash\ncd ~/clawd/skills/crawl-from-x/scripts\npython3 craw_hot.py crawl\n\nLATEST_MD=$(ls -t ~/clawd/skills/crawl-from-x/results/*.md | head -1)\npython3 ~/clawd/skills/send-email/scripts/send_email.py send \\\n  --to your-email@example.com \\\n  --subject \"$(date +'%Y-%m-%d') X 推文摘要\" \\\n  --body \"$(cat $LATEST_MD)\"\n\n\n添加到 cron：\n\ncrontab -e\n# 添加：每天早上 8:00 执行\n0 8 * * * ~/clawd/skills/send-email/scripts/send-x-news.sh\n\n模板功能\n使用模板渲染邮件\n\n使用 --template 参数可以让邮件内容使用指定的模板进行渲染，提供更美观的视觉效果。\n\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"今日 X 推文摘要\" \\\n  --body \"$(cat posts_zh.md)\" \\\n  --template default \\\n  --title \"X 帖子摘要\"\n\n\n参数说明：\n\n--template：模板文件名（不含 .html 扩展名）\n默认模板：default（仿照 x.com 样式）\n模板位置：templates/ 目录\n--title：邮件标题（模板中使用，默认：\"邮件摘要\"）\n默认模板（default）\n\nsend-email 技能内置了一个名为 default 的默认模板，具有以下特点：\n\n设计风格：现代、简约、商务、大气\n视觉参考：仿照 x.com 网页样式\n布局：卡片式布局，圆角边框\n配色：\n背景：白色（#ffffff）\n主要文字：深色（#0f1419）\n次要文字：灰色（#536471）\n链接：蓝色（#1d9bf0）\n边框：浅灰色（#eff3f4）\n响应式：适配移动端和桌面端\n支持内容：文字、图片、链接\n\n模板变量：\n\n{{title}}：邮件标题（通过 --title 参数设置）\n{{subtitle}}：副标题（自动生成时间戳）\n{{content}}：邮件正文内容\n自定义模板\n\n如果默认模板不满足需求，可以创建自定义模板：\n\n在 templates/ 目录下创建新的 HTML 文件\n使用 {{title}}、{{subtitle}}、{{content}} 作为变量占位符\n使用时指定模板名称：\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"每周报告\" \\\n  --body \"$(cat report.md)\" \\\n  --template my-template\n\n\n模板示例： templates/default.html\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>{{title}}</title>\n    <style>\n        /* 自定义样式 */\n        body { font-family: Arial, sans-serif; }\n        .container { max-width: 600px; margin: 0 auto; }\n        /* ... */\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <h1>{{title}}</h1>\n        <p class=\"subtitle\">{{subtitle}}</p>\n        <div class=\"content\">\n            {{content}}\n        </div>\n    </div>\n</body>\n</html>\n\n模板 + Markdown 自动检测\n\n模板功能与 Markdown 自动检测完全兼容：\n\n# 检测 Markdown → 转换为 HTML → 应用模板 → 发送\npython3 send_email.py send \\\n  --to recipient@example.com \\\n  --subject \"X 推文摘要\" \\\n  --body \"$(cat posts_zh.md)\" \\\n  --template default\n\n\n处理流程：\n\n检测 Markdown 格式\n提取并内嵌图片\n转换为 HTML\n应用模板\n发送邮件\n模板目录结构\nsend-email/\n├── scripts/\n│   └── send_email.py\n└── templates/\n    ├── default.html       # 默认模板（仿照 x.com）\n    ├── my-template.html   # 自定义模板 1\n    └── weekly.html       # 自定义模板 2\n\n使用建议\n\n密钥管理（强制）： 首次使用前必须运行 python send_email.py username --save 和 python send_email.py password --save 分别保存发件人邮箱和密码。这些信息会安全存储在 keyring 中，不会暴露在命令行或上下文中。\n\n不要传递密钥： 发送邮件时不要使用 --email 或 --password 参数，这些信息会自动从 keyring 读取。这是为了保护密钥安全。\n\n中国移动邮箱： 默认配置为 smtp.gd.chinamobile.com:465（SSL），默认发件人邮箱为 user@gd.chinamobile.com。\n\nMarkdown 自动检测（推荐）：\n\n脚本会自动检测 Markdown 格式（标题、粗体、列表、图片等）\n自动提取 Markdown 中的图片并内嵌到邮件中\n无需手动指定 --inline-images 或 --html 参数\n如果不想自动转换，使用 --html 参数强制指定为纯 HTML 模式\n\n内嵌图片：\n\n支持 Markdown 语法：![alt](path/to/image.png)\n支持 HTML 语法：<img src=\"path/to/image.png\">\n图片会自动转换为 CID 引用，直接显示在邮件正文中\n建议压缩图片大小（每张 < 500KB），避免邮件过大被拒收\nCID 使用文件名（去掉扩展名），例如 myphoto.png → cid:myphoto\n\n图片路径：\n\n使用绝对路径（推荐）\n确保图片文件存在且可读\n跳过 http:// 和 https:// 开头的图片链接（外链）\n\n附件路径： 使用绝对路径或相对于执行目录的路径\n\n测试： 首次使用时，建议先发送测试邮件给自己\n\nkeyring 备用方案： 如果 keyring 不可用，密钥会保存在 ~/.send_email_password 和 ~/.send_email_username（base64 编码），文件权限为 600。注意这不是加密，仅避免明文存储。\n\n安全流程\n1. 首次配置（中国移动邮箱）：\n   - python send_email.py smtp --host smtp.gd.chinamobile.com --port 465 --no-tls\n   - python send_email.py sender --name \"Your Name\"\n   - python send_email.py username --save --email your-email@gd.chinamobile.com\n   - python send_email.py password --save  ← 输入密码\n\n2. 后续发送：\n   - python send_email.py send --to to@example.com --subject \"...\" --body \"...\"\n     邮箱和密码自动从 keyring 读取\n\n技术说明\nMarkdown 自动检测\n\n脚本会检测以下 Markdown 语法：\n\n标题：# 标题\n粗体：**粗体**\n代码块：```\n列表：- 列表项 或 1. 列表项\n链接：[文本](url)\n图片：![alt](path) ⭐\n\n检测到以上任一语法，会自动转换为 HTML 格式。\n\n图片自动提取\n\n支持两种语法：\n\nMarkdown 语法：\n\n![图片说明](/path/to/image.png)\n\n\nHTML 语法：\n\n<img src=\"/path/to/image.png\">\n\n\n脚本会：\n\n自动提取所有图片路径\n跳过 http:// 和 https:// 开头的链接\n将本地图片路径转换为 CID 引用\n内嵌到邮件中\nCID 工作原理\n图片作为 MIME part 添加到邮件\n每张图片分配 Content-ID（例如 cid:myimage）\nHTML 中使用 <img src=\"cid:myimage\"> 引用\n邮件客户端解析并直接显示图片\n支持的图片格式\nPNG\nJPG / JPEG\nGIF\nWebP\n依赖项\n必须： Python 3.7+\n推荐： keyring（密钥管理）\n推荐： markdown（Markdown 自动转换）\n\n安装依赖：\n\npip install keyring markdown\n\n邮件大小限制\n大多数邮件服务器限制：10-25 MB\n建议：每张图片 < 500KB\n建议：总邮件大小 < 5 MB\n\n如果邮件过大，可能被拒收或放入垃圾邮件。"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/flyingtimes/send-email-tool",
    "publisherUrl": "https://clawhub.ai/flyingtimes/send-email-tool",
    "owner": "flyingtimes",
    "version": "2.5.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/send-email-tool",
    "downloadUrl": "https://openagent3.xyz/downloads/send-email-tool",
    "agentUrl": "https://openagent3.xyz/skills/send-email-tool/agent",
    "manifestUrl": "https://openagent3.xyz/skills/send-email-tool/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/send-email-tool/agent.md"
  }
}