AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Send Email

skill-wangyendt-wayne-skills-send-email · by wangyendt

Send emails via SMTP with support for HTML formatting, file attachments, and email templates. Use when users ask to: (1) Send an email, (2) Email someone, (3) Send a notification, (4) Use email templates, or (5) Send files via email.

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add skill-wangyendt-wayne-skills-send-email

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-wangyendt-wayne-skills-send-email)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Send Email? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Send Email

Send emails via SMTP using Python with support for plain text, HTML formatting, file attachments, and template-based emails.

Key Features

  • Default Sender Email: Automatically uses agent_skill_test@126.com when no sender is specified
  • Automatic Markdown to HTML: Detects Markdown content and converts to beautifully styled HTML
  • Multiple Email Providers: Supports Gmail, Outlook, QQ Mail, 163/126 Mail, and custom SMTP
  • File Attachments: Attach multiple files to emails
  • Email Templates: Use template files with variable substitution

Interactive Email Sending Flow

This skill guides you through the email sending process step by step.

Step 1: Collect Basic Email Information

Ask the user for the following required information. If any is missing, prompt the user to provide it:

| Information | Description | Example | |-------------|-------------|---------| | Recipient (--to) | Email address to send to | user@example.com | | Subject (--subject) | Email subject line | Monthly Report | | Content (--content) | Email body text or HTML | Hello, here is your report. |

IMPORTANT - Default Sender Email Behavior:

If 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.

Only ask the user for a different sender email if they explicitly mention wanting to use their own email address.

When using the default agent_skill_test@126.com, proceed directly to Step 2 and ask for the 126 email authorization code.

Step 2: Identify Email Provider and Collect Credentials

Based on the sender's email address domain, identify the email provider and request the appropriate credentials.

Email Provider Detection
@gmail.com, @googlemail.com   → Gmail
@outlook.com, @hotmail.com, @live.com, @office365.com → Outlook/Office 365
@qq.com, @vip.qq.com          → QQ Mail
@163.com, @126.com            → NetEase Mail
@aliyun.com, @aliyun-inc.com  → Aliyun Mail
@sendgrid.net, @*.sendgrid.net → SendGrid
@*.mailgun.org                → Mailgun
Other domains                  → Custom SMTP (ask for server, port, username, password)
Provider-Specific Credential Requirements

Gmail (@gmail.com, @googlemail.com)

  • Password Type: App Password (NOT account password)
  • Prerequisite: Two-factor authentication (2FA) must be enabled
  • How to get App Password:
  1. Go to https://myaccount.google.com/apppasswords
  2. Sign in to your Google Account
  3. Select "Mail" and "Other (Custom name)" → Enter a name like "SMTP Script"
  4. Click "Generate" → Copy the 16-character password
  • SMTP Server: smtp.gmail.com
  • Port: 587 (TLS) or 465 (SSL)
  • Username: Your full Gmail address

Outlook / Office 365 (@outlook.com, @hotmail.com, @live.com, @office365.com)

  • Password Type: Account password (same as web login)
  • SMTP Server: smtp.office365.com
  • Port: 587 (TLS)
  • Username: Your full Outlook/Office 365 email address

QQ Mail (@qq.com, @vip.qq.com)

  • Password Type: SMTP Authorization Code (NOT account password)
  • How to get Authorization Code:
  1. Login to QQ Mail at https://mail.qq.com
  2. Click "Settings" (设置) → "Account" (账户)
  3. Find "POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV Service"
  4. Open "POP3/SMTP Service" or "IMAP/SMTP Service"
  5. Click "Generate Authorization Code" (生成授权码)
  6. Verify identity via SMS → Copy the generated code
  • SMTP Server: smtp.qq.com
  • Port: 587 (TLS) or 465 (SSL)
  • Username: Your full QQ email address

NetEase 163 Mail (@163.com)

  • Password Type: SMTP Authorization Code (NOT account password)
  • How to get Authorization Code:
  1. Login to 163 Mail at https://mail.163.com
  2. Click "Settings" (设置) → "POP3/SMTP/IMAP"
  3. Click "Open" next to "IMAP/SMTP Service"
  4. Verify identity → Click "Get Authorization Code" (获取授权码)
  5. Copy the 16-character authorization code
  • SMTP Server: smtp.163.com
  • Port: 465 (SSL) or 994 (IMAP)
  • Username: Your full 163 email address

NetEase 126 Mail (@126.com)

  • Password Type: SMTP Authorization Code (NOT account password)
  • How to get Authorization Code:
  1. Login to 126 Mail at https://mail.126.com
  2. Click "Settings" (设置) → "POP3/SMTP/IMAP"
  3. Enable "IMAP/SMTP Service"
  4. Copy the authorization password displayed
  • SMTP Server: smtp.126.com
  • Port: 465 (SSL) or 25 (SSL)
  • Username: Your full 126 email address

SendGrid

  • Password Type: API Key (as password)
  • How to get API Key:
  1. Login to SendGrid at https://app.sendgrid.com
  2. Go to Settings → API Keys
  3. Click "Create API Key"
  4. Set permissions → Click "Create & View"
  5. Copy the API key (only shown once)
  • SMTP Server: smtp.sendgrid.net
  • Port: 587 (TLS) or 465 (SSL)
  • Username: apikey (literally this string)

Mailgun

  • Password Type: SMTP credentials from dashboard
  • How to get Credentials:
  1. Login to Mailgun at https://app.mailgun.com
  2. Go to Sending → Domains
  3. Select your domain
  4. Copy SMTP username and password from the page
  • SMTP Server: smtp.mailgun.org
  • Port: 587 (TLS)
  • Username: From Mailgun dashboard

Custom SMTP (Other domains) Ask the user to provide:

  • SMTP Server Address
  • SMTP Port
  • Username
  • Password

Step 3: Auto-detect and Handle Markdown Content

The script automatically detects if the email content is in Markdown format by looking for common patterns:

  • Headers (#, ##, ###)
  • Bold/italic text (**bold**, *italic*)
  • Lists (- item or 1. item)
  • Code blocks (```)
  • Links ([text](url))

If Markdown is detected, the content is automatically converted to beautifully styled HTML with:

  • Professional typography and spacing
  • Color-coded headers
  • Styled tables and code blocks
  • Responsive design for email clients

You don't need to manually specify --content-type html for Markdown content - it's handled automatically!

Step 4: Collect Optional Information (if needed)

  • --from-name: Display name for sender (e.g., "John Doe")
  • --content-type html: For HTML formatted emails (defaults to plain text, but auto-converts Markdown)
  • --attach: File path(s) to attach (can specify multiple)
  • --template: Use template file instead of content
  • --template-vars: JSON string of template variables

Step 5: Confirm and Send

Before sending, confirm with the user:

Ready to send:
From: [Sender Email]
To: [Recipient Email]
Subject: [Subject]
Content Type: [Plain/HTML]
Attachments: [List of attachments or None]

Proceed to send? (y/n)

If confirmed, execute the send_email.py script with all collected parameters.

Example Conversations

Example 1: Basic Gmail Email

User: Send an email to john@example.com with subject "Hello"

Skill: I can help you send that email. I need a few more details:

  1. Content: What should the email body contain?
  2. Sender Email: What email address should I send from?

User: The content is "Hi John, just saying hello!" and send from myemail@gmail.com

Skill: I detected you're using Gmail. For Gmail, you need an App Password (not your regular password).

To get your App Password:

  1. Go to https://myaccount.google.com/apppasswords
  2. Sign in and create an App Password for "Mail"
  3. Copy the 16-character password

Please provide your Gmail App Password:

User: abcd efgh ijkl mnop

Skill: Ready to send:

  • From: myemail@gmail.com
  • To: john@example.com
  • Subject: Hello
  • Content: Hi John, just saying hello!

Proceed to send? (y/n)


Example 2: Markdown Content with Default Sender

User: 发一封邮件给 manager@company.com,主题是"AR眼镜行业分析",内容是 [用户提供的 Markdown 报告]

Skill: 我来帮您发送这封邮件。检测到您没有指定发件人邮箱,我将使用默认邮箱 agent_skill_test@126.com 发送。

同时,我发现您的内容是 Markdown 格式,将自动转换为美观的 HTML 格式,让报告更易读。

为了使用 126 邮箱发送,我需要您提供 SMTP 授权码

获取授权码步骤:

  1. 登录 126 邮箱 → 设置 → POP3/SMTP/IMAP
  2. 启用 "IMAP/SMTP 服务"
  3. 复制显示的授权密码

请提供 agentskilltest@126.com 的授权码:

User: [提供授权码]

Skill: 准备发送邮件:

  • 发件人: agentskilltest@126.com
  • 收件人: manager@company.com
  • 主题: AR眼镜行业分析
  • 格式: Markdown → HTML (自动转换)
  • 内容预览: 包含标题、列表、表格等格式化内容

确认发送? (y/n)


Example 3: Default Sender with Missing Content

User: 发邮件给 user@company.com,主题是项目报告

Skill: 我需要收集邮件内容:

邮件正文是什么?

User: 项目已完成,所有里程碑都已达成。

Skill: 我将使用默认邮箱 agent_skill_test@126.com 发送。

为了使用 126 邮箱发送,我需要您提供 SMTP 授权码

获取授权码步骤:

  1. 登录 126 邮箱 → 设置 → POP3/SMTP/IMAP
  2. 启用 "IMAP/SMTP 服务"
  3. 复制显示的授权密码

请提供 agentskilltest@126.com 的授权码:

User: [提供授权码]

Skill: 准备发送邮件:

  • 发件人: agentskilltest@126.com
  • 收件人: user@company.com
  • 主题: 项目报告
  • 内容: 项目已完成,所有里程碑都已达成。

确认发送?(y/n)


Example 4: User Specifies Custom Sender Email

User: Send a report to boss@company.com from myname@outlook.com about Q4 results, with attachment /home/user/q4_report.pdf

Skill: I'll help you send that email. Please provide the email content:

What should the email say about the Q4 results?

User: Please find attached the Q4 financial report. Let me know if you have any questions.

Skill: I see you're using Outlook. You'll need your Outlook account password (same as web login).

Please provide your Outlook password:

User: mypassword123

Skill: Ready to send:

  • From: myname@outlook.com
  • To: boss@company.com
  • Subject: Q4 results
  • Content: Please find attached the Q4 financial report. Let me know if you have any questions.
  • Attachment: /home/user/q4_report.pdf

Proceed to send? (y/n)


Example 5: Custom SMTP

User: Send email to test@domain.com from my@domain.com

Skill: I need to gather some information:

  1. Subject: What is the email subject?
  2. Content: What is the email body?

User: Subject is Test Email, content is Hello World

Skill: Since you're using a custom domain (my@domain.com), I'll need your SMTP configuration:

  1. SMTP Server: What is your SMTP server address?
  2. SMTP Port: What port should I use?
  3. Username: What is your SMTP username?
  4. Password: What is your SMTP password?

User: Server is smtp.mydomain.com, port 587, username is my@domain.com, password is secret

Skill: Ready to send:

  • From: my@domain.com
  • To: test@domain.com
  • Subject: Test Email
  • Content: Hello World
  • SMTP Server: smtp.mydomain.com:587

Proceed to send? (y/n)

Script Command Reference

Once all information is collected, execute the script with appropriate parameters:

Basic Command

python3 scripts/send_email.py \
  --to recipient@example.com \
  --subject "Email Subject" \
  --content "Email body content" \
  --smtp-server smtp.gmail.com \
  --smtp-port 587 \
  --username your@email.com \
  --password your-password-or-app-password

HTML Email

python3 scripts/send_email.py \
  --to recipient@example.com \
  --subject "Email Subject" \
  --content "HelloHTML content" \
  --content-type html \
  --smtp-server smtp.gmail.com \
  --smtp-port 587 \
  --username your@email.com \
  --password your-password

Email with Attachments

python3 scripts/send_email.py \
  --to recipient@example.com \
  --subject "Email Subject" \
  --content "Email body" \
  --attach /path/to/file1.pdf \
  --attach /path/to/file2.csv \
  --smtp-server smtp.gmail.com \
  --smtp-port 587 \
  --username your@email.com \
  --password your-password

Email with Template

python3 scripts/send_email.py \
  --to recipient@example.com \
  --subject "Email Subject" \
  --template assets/simple-notification.html \
  --template-vars '{"title":"Notification","message":"Your report is ready!"}' \
  --content-type html \
  --smtp-server smtp.gmail.com \
  --smtp-port 587 \
  --username your@email.com \
  --password your-password

SSL Connection (instead of TLS)

python3 scripts/send_email.py \
  --to recipient@example.com \
  --subject "Email Subject" \
  --content "Email body" \
  --smtp-server smtp.gmail.com \
  --smtp-port 465 \
  --use-ssl \
  --username your@email.com \
  --password your-password

SMTP Server Configuration Reference

| Provider | SMTP Server | Port | Encryption | Password Type | Username | |----------|-------------|------|------------|---------------|----------| | Gmail | smtp.gmail.com | 587 | TLS | App Password | Full email | | Gmail | smtp.gmail.com | 465 | SSL | App Password | Full email | | Outlook | smtp.office365.com | 587 | TLS | Account Password | Full email | | QQ Mail | smtp.qq.com | 587 | TLS | Authorization Code | Full email | | QQ Mail | smtp.qq.com | 465 | SSL | Authorization Code | Full email | | 163 Mail | smtp.163.com | 465 | SSL | Authorization Code | Full email | | 163 Mail | smtp.163.com | 994 | SSL | Authorization Code | Full email | | 126 Mail | smtp.126.com | 465 | SSL | Authorization Code | Full email | | 126 Mail | smtp.126.com | 25 | SSL | Authorization Code | Full email | | SendGrid | smtp.sendgrid.net | 587 | TLS | API Key | apikey | | SendGrid | smtp.sendgrid.net | 465 | SSL | API Key | apikey | | Mailgun | smtp.mailgun.org | 587 | TLS | SMTP Password | From dashboard |

Installation

Before using this skill, install the required Python dependencies:

pip install -r requirements.txt

This installs the markdown library (version ≥3.4.0) which is required for automatic Markdown to HTML conversion.

Resources

scripts/send_email.py

Main Python script for sending emails. Supports:

  • Plain text and HTML content
  • Multiple file attachments
  • Email templates with variable substitution
  • TLS and SSL encryption
  • Custom sender names

references/smtp-servers.md

Common SMTP server configurations including Gmail, Outlook, 126, QQ, 163, SendGrid, Mailgun, and Aliyun.

assets/

Email templates:

  • simple-notification.html - Basic notification template
  • report-summary.html - Professional report template with metrics grid

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.