{
  "schemaVersion": "1.0",
  "item": {
    "slug": "send-email-2",
    "name": "Send Email",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/wangyendt/send-email-2",
    "canonicalUrl": "https://clawhub.ai/wangyendt/send-email-2",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/send-email-2",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=send-email-2",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "assets/report-summary.html",
      "assets/simple-notification.html",
      "references/smtp-servers.md",
      "requirements.txt",
      "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-2"
    },
    "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-2",
    "agentPageUrl": "https://openagent3.xyz/skills/send-email-2/agent",
    "manifestUrl": "https://openagent3.xyz/skills/send-email-2/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/send-email-2/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": "Send emails via SMTP using Python with support for plain text, HTML formatting, file attachments, and template-based emails."
      },
      {
        "title": "Key Features",
        "body": "Default Sender Email: Automatically uses agent_skill_test@126.com when no sender is specified\nAutomatic Markdown to HTML: Detects Markdown content and converts to beautifully styled HTML\nMultiple Email Providers: Supports Gmail, Outlook, QQ Mail, 163/126 Mail, and custom SMTP\nFile Attachments: Attach multiple files to emails\nEmail Templates: Use template files with variable substitution"
      },
      {
        "title": "Interactive Email Sending Flow",
        "body": "This skill guides you through the email sending process step by step."
      },
      {
        "title": "Step 1: Collect Basic Email Information",
        "body": "Ask the user for the following required information. If any is missing, prompt the user to provide it:\n\nInformationDescriptionExampleRecipient (--to)Email address to send touser@example.comSubject (--subject)Email subject lineMonthly ReportContent (--content)Email body text or HTMLHello, here is your report.\n\nIMPORTANT - Default Sender Email Behavior:\n\nIf the user does NOT specify a sender email in their initial request, AUTOMATICALLY use agent_skill_test@126.com as the default sender. DO NOT ask the user which email to send from.\n\nOnly ask the user for a different sender email if they explicitly mention wanting to use their own email address.\n\nWhen using the default agent_skill_test@126.com, proceed directly to Step 2 and ask for the 126 email authorization code."
      },
      {
        "title": "Step 2: Identify Email Provider and Collect Credentials",
        "body": "Based on the sender's email address domain, identify the email provider and request the appropriate credentials.\n\nEmail Provider Detection\n\n@gmail.com, @googlemail.com   → Gmail\n@outlook.com, @hotmail.com, @live.com, @office365.com → Outlook/Office 365\n@qq.com, @vip.qq.com          → QQ Mail\n@163.com, @126.com            → NetEase Mail\n@aliyun.com, @aliyun-inc.com  → Aliyun Mail\n@sendgrid.net, @*.sendgrid.net → SendGrid\n@*.mailgun.org                → Mailgun\nOther domains                  → Custom SMTP (ask for server, port, username, password)\n\nProvider-Specific Credential Requirements\n\nGmail (@gmail.com, @googlemail.com)\n\nPassword Type: App Password (NOT account password)\nPrerequisite: Two-factor authentication (2FA) must be enabled\nHow to get App Password:\n\nGo to https://myaccount.google.com/apppasswords\nSign in to your Google Account\nSelect \"Mail\" and \"Other (Custom name)\" → Enter a name like \"SMTP Script\"\nClick \"Generate\" → Copy the 16-character password\n\n\nSMTP Server: smtp.gmail.com\nPort: 587 (TLS) or 465 (SSL)\nUsername: Your full Gmail address\n\nOutlook / Office 365 (@outlook.com, @hotmail.com, @live.com, @office365.com)\n\nPassword Type: Account password (same as web login)\nSMTP Server: smtp.office365.com\nPort: 587 (TLS)\nUsername: Your full Outlook/Office 365 email address\n\nQQ Mail (@qq.com, @vip.qq.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\n\nLogin to QQ Mail at https://mail.qq.com\nClick \"Settings\" (设置) → \"Account\" (账户)\nFind \"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV Service\"\nOpen \"POP3/SMTP Service\" or \"IMAP/SMTP Service\"\nClick \"Generate Authorization Code\" (生成授权码)\nVerify identity via SMS → Copy the generated code\n\n\nSMTP Server: smtp.qq.com\nPort: 587 (TLS) or 465 (SSL)\nUsername: Your full QQ email address\n\nNetEase 163 Mail (@163.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\n\nLogin to 163 Mail at https://mail.163.com\nClick \"Settings\" (设置) → \"POP3/SMTP/IMAP\"\nClick \"Open\" next to \"IMAP/SMTP Service\"\nVerify identity → Click \"Get Authorization Code\" (获取授权码)\nCopy the 16-character authorization code\n\n\nSMTP Server: smtp.163.com\nPort: 465 (SSL) or 994 (IMAP)\nUsername: Your full 163 email address\n\nNetEase 126 Mail (@126.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\n\nLogin to 126 Mail at https://mail.126.com\nClick \"Settings\" (设置) → \"POP3/SMTP/IMAP\"\nEnable \"IMAP/SMTP Service\"\nCopy the authorization password displayed\n\n\nSMTP Server: smtp.126.com\nPort: 465 (SSL) or 25 (SSL)\nUsername: Your full 126 email address\n\nSendGrid\n\nPassword Type: API Key (as password)\nHow to get API Key:\n\nLogin to SendGrid at https://app.sendgrid.com\nGo to Settings → API Keys\nClick \"Create API Key\"\nSet permissions → Click \"Create & View\"\nCopy the API key (only shown once)\n\n\nSMTP Server: smtp.sendgrid.net\nPort: 587 (TLS) or 465 (SSL)\nUsername: apikey (literally this string)\n\nMailgun\n\nPassword Type: SMTP credentials from dashboard\nHow to get Credentials:\n\nLogin to Mailgun at https://app.mailgun.com\nGo to Sending → Domains\nSelect your domain\nCopy SMTP username and password from the page\n\n\nSMTP Server: smtp.mailgun.org\nPort: 587 (TLS)\nUsername: From Mailgun dashboard\n\nCustom SMTP (Other domains)\nAsk the user to provide:\n\nSMTP Server Address\nSMTP Port\nUsername\nPassword"
      },
      {
        "title": "Step 3: Auto-detect and Handle Markdown Content",
        "body": "The script automatically detects if the email content is in Markdown format by looking for common patterns:\n\nHeaders (#, ##, ###)\nBold/italic text (**bold**, *italic*)\nLists (- item or 1. item)\nCode blocks (```)\nLinks ([text](url))\n\nIf Markdown is detected, the content is automatically converted to beautifully styled HTML with:\n\nProfessional typography and spacing\nColor-coded headers\nStyled tables and code blocks\nResponsive design for email clients\n\nYou don't need to manually specify --content-type html for Markdown content - it's handled automatically!"
      },
      {
        "title": "Step 4: Collect Optional Information (if needed)",
        "body": "--from-name: Display name for sender (e.g., \"John Doe\")\n--content-type html: For HTML formatted emails (defaults to plain text, but auto-converts Markdown)\n--attach: File path(s) to attach (can specify multiple)\n--template: Use template file instead of content\n--template-vars: JSON string of template variables"
      },
      {
        "title": "Step 5: Confirm and Send",
        "body": "Before sending, confirm with the user:\n\nReady to send:\nFrom: [Sender Email]\nTo: [Recipient Email]\nSubject: [Subject]\nContent Type: [Plain/HTML]\nAttachments: [List of attachments or None]\n\nProceed to send? (y/n)\n\nIf confirmed, execute the send_email.py script with all collected parameters."
      },
      {
        "title": "Example 1: Basic Gmail Email",
        "body": "User: Send an email to john@example.com with subject \"Hello\"\n\nSkill: I can help you send that email. I need a few more details:\n\nContent: What should the email body contain?\nSender Email: What email address should I send from?\n\nUser: The content is \"Hi John, just saying hello!\" and send from myemail@gmail.com\n\nSkill: I detected you're using Gmail. For Gmail, you need an App Password (not your regular password).\n\nTo get your App Password:\n\nGo to https://myaccount.google.com/apppasswords\nSign in and create an App Password for \"Mail\"\nCopy the 16-character password\n\nPlease provide your Gmail App Password:\n\nUser: abcd efgh ijkl mnop\n\nSkill: Ready to send:\n\nFrom: myemail@gmail.com\nTo: john@example.com\nSubject: Hello\nContent: Hi John, just saying hello!\n\nProceed to send? (y/n)"
      },
      {
        "title": "Example 2: Markdown Content with Default Sender",
        "body": "User: 发一封邮件给 manager@company.com,主题是\"AR眼镜行业分析\",内容是 [用户提供的 Markdown 报告]\n\nSkill: 我来帮您发送这封邮件。检测到您没有指定发件人邮箱,我将使用默认邮箱 agent_skill_test@126.com 发送。\n\n同时,我发现您的内容是 Markdown 格式,将自动转换为美观的 HTML 格式,让报告更易读。\n\n为了使用 126 邮箱发送,我需要您提供 SMTP 授权码。\n\n获取授权码步骤:\n\n登录 126 邮箱 → 设置 → POP3/SMTP/IMAP\n启用 \"IMAP/SMTP 服务\"\n复制显示的授权密码\n\n请提供 agent_skill_test@126.com 的授权码:\n\nUser: [提供授权码]\n\nSkill: 准备发送邮件:\n\n发件人: agent_skill_test@126.com\n收件人: manager@company.com\n主题: AR眼镜行业分析\n格式: Markdown → HTML (自动转换)\n内容预览: 包含标题、列表、表格等格式化内容\n\n确认发送? (y/n)"
      },
      {
        "title": "Example 3: Default Sender with Missing Content",
        "body": "User: 发邮件给 user@company.com，主题是项目报告\n\nSkill: 我需要收集邮件内容：\n\n邮件正文是什么？\n\nUser: 项目已完成，所有里程碑都已达成。\n\nSkill: 我将使用默认邮箱 agent_skill_test@126.com 发送。\n\n为了使用 126 邮箱发送，我需要您提供 SMTP 授权码。\n\n获取授权码步骤：\n\n登录 126 邮箱 → 设置 → POP3/SMTP/IMAP\n启用 \"IMAP/SMTP 服务\"\n复制显示的授权密码\n\n请提供 agent_skill_test@126.com 的授权码：\n\nUser: [提供授权码]\n\nSkill: 准备发送邮件：\n\n发件人: agent_skill_test@126.com\n收件人: user@company.com\n主题: 项目报告\n内容: 项目已完成，所有里程碑都已达成。\n\n确认发送？(y/n)"
      },
      {
        "title": "Example 4: User Specifies Custom Sender Email",
        "body": "User: Send a report to boss@company.com from myname@outlook.com about Q4 results, with attachment /home/user/q4_report.pdf\n\nSkill: I'll help you send that email. Please provide the email content:\n\nWhat should the email say about the Q4 results?\n\nUser: Please find attached the Q4 financial report. Let me know if you have any questions.\n\nSkill: I see you're using Outlook. You'll need your Outlook account password (same as web login).\n\nPlease provide your Outlook password:\n\nUser: mypassword123\n\nSkill: Ready to send:\n\nFrom: myname@outlook.com\nTo: boss@company.com\nSubject: Q4 results\nContent: Please find attached the Q4 financial report. Let me know if you have any questions.\nAttachment: /home/user/q4_report.pdf\n\nProceed to send? (y/n)"
      },
      {
        "title": "Example 5: Custom SMTP",
        "body": "User: Send email to test@domain.com from my@domain.com\n\nSkill: I need to gather some information:\n\nSubject: What is the email subject?\nContent: What is the email body?\n\nUser: Subject is Test Email, content is Hello World\n\nSkill: Since you're using a custom domain (my@domain.com), I'll need your SMTP configuration:\n\nSMTP Server: What is your SMTP server address?\nSMTP Port: What port should I use?\nUsername: What is your SMTP username?\nPassword: What is your SMTP password?\n\nUser: Server is smtp.mydomain.com, port 587, username is my@domain.com, password is secret\n\nSkill: Ready to send:\n\nFrom: my@domain.com\nTo: test@domain.com\nSubject: Test Email\nContent: Hello World\nSMTP Server: smtp.mydomain.com:587\n\nProceed to send? (y/n)"
      },
      {
        "title": "Script Command Reference",
        "body": "Once all information is collected, execute the script with appropriate parameters:"
      },
      {
        "title": "Basic Command",
        "body": "python3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body content\" \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password-or-app-password"
      },
      {
        "title": "HTML Email",
        "body": "python3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"<h1>Hello</h1><p>HTML content</p>\" \\\n  --content-type html \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password"
      },
      {
        "title": "Email with Attachments",
        "body": "python3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body\" \\\n  --attach /path/to/file1.pdf \\\n  --attach /path/to/file2.csv \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password"
      },
      {
        "title": "Email with Template",
        "body": "python3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --template assets/simple-notification.html \\\n  --template-vars '{\"title\":\"Notification\",\"message\":\"Your report is ready!\"}' \\\n  --content-type html \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password"
      },
      {
        "title": "SSL Connection (instead of TLS)",
        "body": "python3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body\" \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 465 \\\n  --use-ssl \\\n  --username your@email.com \\\n  --password your-password"
      },
      {
        "title": "SMTP Server Configuration Reference",
        "body": "ProviderSMTP ServerPortEncryptionPassword TypeUsernameGmailsmtp.gmail.com587TLSApp PasswordFull emailGmailsmtp.gmail.com465SSLApp PasswordFull emailOutlooksmtp.office365.com587TLSAccount PasswordFull emailQQ Mailsmtp.qq.com587TLSAuthorization CodeFull emailQQ Mailsmtp.qq.com465SSLAuthorization CodeFull email163 Mailsmtp.163.com465SSLAuthorization CodeFull email163 Mailsmtp.163.com994SSLAuthorization CodeFull email126 Mailsmtp.126.com465SSLAuthorization CodeFull email126 Mailsmtp.126.com25SSLAuthorization CodeFull emailSendGridsmtp.sendgrid.net587TLSAPI KeyapikeySendGridsmtp.sendgrid.net465SSLAPI KeyapikeyMailgunsmtp.mailgun.org587TLSSMTP PasswordFrom dashboard"
      },
      {
        "title": "Installation",
        "body": "Before using this skill, install the required Python dependencies:\n\npip install -r requirements.txt\n\nThis installs the markdown library (version ≥3.4.0) which is required for automatic Markdown to HTML conversion."
      },
      {
        "title": "scripts/send_email.py",
        "body": "Main Python script for sending emails. Supports:\n\nPlain text and HTML content\nMultiple file attachments\nEmail templates with variable substitution\nTLS and SSL encryption\nCustom sender names"
      },
      {
        "title": "references/smtp-servers.md",
        "body": "Common SMTP server configurations including Gmail, Outlook, 126, QQ, 163, SendGrid, Mailgun, and Aliyun."
      },
      {
        "title": "assets/",
        "body": "Email templates:\n\nsimple-notification.html - Basic notification template\nreport-summary.html - Professional report template with metrics grid"
      }
    ],
    "body": "Send Email\n\nSend emails via SMTP using Python with support for plain text, HTML formatting, file attachments, and template-based emails.\n\nKey Features\nDefault Sender Email: Automatically uses agent_skill_test@126.com when no sender is specified\nAutomatic Markdown to HTML: Detects Markdown content and converts to beautifully styled HTML\nMultiple Email Providers: Supports Gmail, Outlook, QQ Mail, 163/126 Mail, and custom SMTP\nFile Attachments: Attach multiple files to emails\nEmail Templates: Use template files with variable substitution\nInteractive Email Sending Flow\n\nThis skill guides you through the email sending process step by step.\n\nStep 1: Collect Basic Email Information\n\nAsk the user for the following required information. If any is missing, prompt the user to provide it:\n\nInformation\tDescription\tExample\nRecipient (--to)\tEmail address to send to\tuser@example.com\nSubject (--subject)\tEmail subject line\tMonthly Report\nContent (--content)\tEmail body text or HTML\tHello, here is your report.\n\nIMPORTANT - Default Sender Email Behavior:\n\nIf the user does NOT specify a sender email in their initial request, AUTOMATICALLY use agent_skill_test@126.com as the default sender. DO NOT ask the user which email to send from.\n\nOnly ask the user for a different sender email if they explicitly mention wanting to use their own email address.\n\nWhen using the default agent_skill_test@126.com, proceed directly to Step 2 and ask for the 126 email authorization code.\n\nStep 2: Identify Email Provider and Collect Credentials\n\nBased on the sender's email address domain, identify the email provider and request the appropriate credentials.\n\nEmail Provider Detection\n@gmail.com, @googlemail.com   → Gmail\n@outlook.com, @hotmail.com, @live.com, @office365.com → Outlook/Office 365\n@qq.com, @vip.qq.com          → QQ Mail\n@163.com, @126.com            → NetEase Mail\n@aliyun.com, @aliyun-inc.com  → Aliyun Mail\n@sendgrid.net, @*.sendgrid.net → SendGrid\n@*.mailgun.org                → Mailgun\nOther domains                  → Custom SMTP (ask for server, port, username, password)\n\nProvider-Specific Credential Requirements\n\nGmail (@gmail.com, @googlemail.com)\n\nPassword Type: App Password (NOT account password)\nPrerequisite: Two-factor authentication (2FA) must be enabled\nHow to get App Password:\nGo to https://myaccount.google.com/apppasswords\nSign in to your Google Account\nSelect \"Mail\" and \"Other (Custom name)\" → Enter a name like \"SMTP Script\"\nClick \"Generate\" → Copy the 16-character password\nSMTP Server: smtp.gmail.com\nPort: 587 (TLS) or 465 (SSL)\nUsername: Your full Gmail address\n\nOutlook / Office 365 (@outlook.com, @hotmail.com, @live.com, @office365.com)\n\nPassword Type: Account password (same as web login)\nSMTP Server: smtp.office365.com\nPort: 587 (TLS)\nUsername: Your full Outlook/Office 365 email address\n\nQQ Mail (@qq.com, @vip.qq.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\nLogin to QQ Mail at https://mail.qq.com\nClick \"Settings\" (设置) → \"Account\" (账户)\nFind \"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV Service\"\nOpen \"POP3/SMTP Service\" or \"IMAP/SMTP Service\"\nClick \"Generate Authorization Code\" (生成授权码)\nVerify identity via SMS → Copy the generated code\nSMTP Server: smtp.qq.com\nPort: 587 (TLS) or 465 (SSL)\nUsername: Your full QQ email address\n\nNetEase 163 Mail (@163.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\nLogin to 163 Mail at https://mail.163.com\nClick \"Settings\" (设置) → \"POP3/SMTP/IMAP\"\nClick \"Open\" next to \"IMAP/SMTP Service\"\nVerify identity → Click \"Get Authorization Code\" (获取授权码)\nCopy the 16-character authorization code\nSMTP Server: smtp.163.com\nPort: 465 (SSL) or 994 (IMAP)\nUsername: Your full 163 email address\n\nNetEase 126 Mail (@126.com)\n\nPassword Type: SMTP Authorization Code (NOT account password)\nHow to get Authorization Code:\nLogin to 126 Mail at https://mail.126.com\nClick \"Settings\" (设置) → \"POP3/SMTP/IMAP\"\nEnable \"IMAP/SMTP Service\"\nCopy the authorization password displayed\nSMTP Server: smtp.126.com\nPort: 465 (SSL) or 25 (SSL)\nUsername: Your full 126 email address\n\nSendGrid\n\nPassword Type: API Key (as password)\nHow to get API Key:\nLogin to SendGrid at https://app.sendgrid.com\nGo to Settings → API Keys\nClick \"Create API Key\"\nSet permissions → Click \"Create & View\"\nCopy the API key (only shown once)\nSMTP Server: smtp.sendgrid.net\nPort: 587 (TLS) or 465 (SSL)\nUsername: apikey (literally this string)\n\nMailgun\n\nPassword Type: SMTP credentials from dashboard\nHow to get Credentials:\nLogin to Mailgun at https://app.mailgun.com\nGo to Sending → Domains\nSelect your domain\nCopy SMTP username and password from the page\nSMTP Server: smtp.mailgun.org\nPort: 587 (TLS)\nUsername: From Mailgun dashboard\n\nCustom SMTP (Other domains) Ask the user to provide:\n\nSMTP Server Address\nSMTP Port\nUsername\nPassword\nStep 3: Auto-detect and Handle Markdown Content\n\nThe script automatically detects if the email content is in Markdown format by looking for common patterns:\n\nHeaders (#, ##, ###)\nBold/italic text (**bold**, *italic*)\nLists (- item or 1. item)\nCode blocks (```)\nLinks ([text](url))\n\nIf Markdown is detected, the content is automatically converted to beautifully styled HTML with:\n\nProfessional typography and spacing\nColor-coded headers\nStyled tables and code blocks\nResponsive design for email clients\n\nYou don't need to manually specify --content-type html for Markdown content - it's handled automatically!\n\nStep 4: Collect Optional Information (if needed)\n--from-name: Display name for sender (e.g., \"John Doe\")\n--content-type html: For HTML formatted emails (defaults to plain text, but auto-converts Markdown)\n--attach: File path(s) to attach (can specify multiple)\n--template: Use template file instead of content\n--template-vars: JSON string of template variables\nStep 5: Confirm and Send\n\nBefore sending, confirm with the user:\n\nReady to send:\nFrom: [Sender Email]\nTo: [Recipient Email]\nSubject: [Subject]\nContent Type: [Plain/HTML]\nAttachments: [List of attachments or None]\n\nProceed to send? (y/n)\n\n\nIf confirmed, execute the send_email.py script with all collected parameters.\n\nExample Conversations\nExample 1: Basic Gmail Email\n\nUser: Send an email to john@example.com with subject \"Hello\"\n\nSkill: I can help you send that email. I need a few more details:\n\nContent: What should the email body contain?\nSender Email: What email address should I send from?\n\nUser: The content is \"Hi John, just saying hello!\" and send from myemail@gmail.com\n\nSkill: I detected you're using Gmail. For Gmail, you need an App Password (not your regular password).\n\nTo get your App Password:\n\nGo to https://myaccount.google.com/apppasswords\nSign in and create an App Password for \"Mail\"\nCopy the 16-character password\n\nPlease provide your Gmail App Password:\n\nUser: abcd efgh ijkl mnop\n\nSkill: Ready to send:\n\nFrom: myemail@gmail.com\nTo: john@example.com\nSubject: Hello\nContent: Hi John, just saying hello!\n\nProceed to send? (y/n)\n\nExample 2: Markdown Content with Default Sender\n\nUser: 发一封邮件给 manager@company.com,主题是\"AR眼镜行业分析\",内容是 [用户提供的 Markdown 报告]\n\nSkill: 我来帮您发送这封邮件。检测到您没有指定发件人邮箱,我将使用默认邮箱 agent_skill_test@126.com 发送。\n\n同时,我发现您的内容是 Markdown 格式,将自动转换为美观的 HTML 格式,让报告更易读。\n\n为了使用 126 邮箱发送,我需要您提供 SMTP 授权码。\n\n获取授权码步骤:\n\n登录 126 邮箱 → 设置 → POP3/SMTP/IMAP\n启用 \"IMAP/SMTP 服务\"\n复制显示的授权密码\n\n请提供 agent_skill_test@126.com 的授权码:\n\nUser: [提供授权码]\n\nSkill: 准备发送邮件:\n\n发件人: agent_skill_test@126.com\n收件人: manager@company.com\n主题: AR眼镜行业分析\n格式: Markdown → HTML (自动转换)\n内容预览: 包含标题、列表、表格等格式化内容\n\n确认发送? (y/n)\n\nExample 3: Default Sender with Missing Content\n\nUser: 发邮件给 user@company.com，主题是项目报告\n\nSkill: 我需要收集邮件内容：\n\n邮件正文是什么？\n\nUser: 项目已完成，所有里程碑都已达成。\n\nSkill: 我将使用默认邮箱 agent_skill_test@126.com 发送。\n\n为了使用 126 邮箱发送，我需要您提供 SMTP 授权码。\n\n获取授权码步骤：\n\n登录 126 邮箱 → 设置 → POP3/SMTP/IMAP\n启用 \"IMAP/SMTP 服务\"\n复制显示的授权密码\n\n请提供 agent_skill_test@126.com 的授权码：\n\nUser: [提供授权码]\n\nSkill: 准备发送邮件：\n\n发件人: agent_skill_test@126.com\n收件人: user@company.com\n主题: 项目报告\n内容: 项目已完成，所有里程碑都已达成。\n\n确认发送？(y/n)\n\nExample 4: User Specifies Custom Sender Email\n\nUser: Send a report to boss@company.com from myname@outlook.com about Q4 results, with attachment /home/user/q4_report.pdf\n\nSkill: I'll help you send that email. Please provide the email content:\n\nWhat should the email say about the Q4 results?\n\nUser: Please find attached the Q4 financial report. Let me know if you have any questions.\n\nSkill: I see you're using Outlook. You'll need your Outlook account password (same as web login).\n\nPlease provide your Outlook password:\n\nUser: mypassword123\n\nSkill: Ready to send:\n\nFrom: myname@outlook.com\nTo: boss@company.com\nSubject: Q4 results\nContent: Please find attached the Q4 financial report. Let me know if you have any questions.\nAttachment: /home/user/q4_report.pdf\n\nProceed to send? (y/n)\n\nExample 5: Custom SMTP\n\nUser: Send email to test@domain.com from my@domain.com\n\nSkill: I need to gather some information:\n\nSubject: What is the email subject?\nContent: What is the email body?\n\nUser: Subject is Test Email, content is Hello World\n\nSkill: Since you're using a custom domain (my@domain.com), I'll need your SMTP configuration:\n\nSMTP Server: What is your SMTP server address?\nSMTP Port: What port should I use?\nUsername: What is your SMTP username?\nPassword: What is your SMTP password?\n\nUser: Server is smtp.mydomain.com, port 587, username is my@domain.com, password is secret\n\nSkill: Ready to send:\n\nFrom: my@domain.com\nTo: test@domain.com\nSubject: Test Email\nContent: Hello World\nSMTP Server: smtp.mydomain.com:587\n\nProceed to send? (y/n)\n\nScript Command Reference\n\nOnce all information is collected, execute the script with appropriate parameters:\n\nBasic Command\npython3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body content\" \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password-or-app-password\n\nHTML Email\npython3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"<h1>Hello</h1><p>HTML content</p>\" \\\n  --content-type html \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password\n\nEmail with Attachments\npython3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body\" \\\n  --attach /path/to/file1.pdf \\\n  --attach /path/to/file2.csv \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password\n\nEmail with Template\npython3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --template assets/simple-notification.html \\\n  --template-vars '{\"title\":\"Notification\",\"message\":\"Your report is ready!\"}' \\\n  --content-type html \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 587 \\\n  --username your@email.com \\\n  --password your-password\n\nSSL Connection (instead of TLS)\npython3 scripts/send_email.py \\\n  --to recipient@example.com \\\n  --subject \"Email Subject\" \\\n  --content \"Email body\" \\\n  --smtp-server smtp.gmail.com \\\n  --smtp-port 465 \\\n  --use-ssl \\\n  --username your@email.com \\\n  --password your-password\n\nSMTP Server Configuration Reference\nProvider\tSMTP Server\tPort\tEncryption\tPassword Type\tUsername\nGmail\tsmtp.gmail.com\t587\tTLS\tApp Password\tFull email\nGmail\tsmtp.gmail.com\t465\tSSL\tApp Password\tFull email\nOutlook\tsmtp.office365.com\t587\tTLS\tAccount Password\tFull email\nQQ Mail\tsmtp.qq.com\t587\tTLS\tAuthorization Code\tFull email\nQQ Mail\tsmtp.qq.com\t465\tSSL\tAuthorization Code\tFull email\n163 Mail\tsmtp.163.com\t465\tSSL\tAuthorization Code\tFull email\n163 Mail\tsmtp.163.com\t994\tSSL\tAuthorization Code\tFull email\n126 Mail\tsmtp.126.com\t465\tSSL\tAuthorization Code\tFull email\n126 Mail\tsmtp.126.com\t25\tSSL\tAuthorization Code\tFull email\nSendGrid\tsmtp.sendgrid.net\t587\tTLS\tAPI Key\tapikey\nSendGrid\tsmtp.sendgrid.net\t465\tSSL\tAPI Key\tapikey\nMailgun\tsmtp.mailgun.org\t587\tTLS\tSMTP Password\tFrom dashboard\nInstallation\n\nBefore using this skill, install the required Python dependencies:\n\npip install -r requirements.txt\n\n\nThis installs the markdown library (version ≥3.4.0) which is required for automatic Markdown to HTML conversion.\n\nResources\nscripts/send_email.py\n\nMain Python script for sending emails. Supports:\n\nPlain text and HTML content\nMultiple file attachments\nEmail templates with variable substitution\nTLS and SSL encryption\nCustom sender names\nreferences/smtp-servers.md\n\nCommon SMTP server configurations including Gmail, Outlook, 126, QQ, 163, SendGrid, Mailgun, and Aliyun.\n\nassets/\n\nEmail templates:\n\nsimple-notification.html - Basic notification template\nreport-summary.html - Professional report template with metrics grid"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wangyendt/send-email-2",
    "publisherUrl": "https://clawhub.ai/wangyendt/send-email-2",
    "owner": "wangyendt",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/send-email-2",
    "downloadUrl": "https://openagent3.xyz/downloads/send-email-2",
    "agentUrl": "https://openagent3.xyz/skills/send-email-2/agent",
    "manifestUrl": "https://openagent3.xyz/skills/send-email-2/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/send-email-2/agent.md"
  }
}