home / skills / openclaw / skills / email-skill

email-skill skill

/skills/awspace/email-skill

This skill helps you manage and automate emails across providers, with attachments support, TLS security, and seamless sending from your applications.

npx playbooks add skill openclaw/skills --skill email-skill

Review the files below or copy the command above to add this skill to your agents.

Files (7)
SKILL.md
3.8 KB
---
name: email
description: Email management and automation. Send, read, search, and organize emails across multiple providers.
metadata: {"clawdbot":{"emoji":"📧","always":true,"requires":{"bins":["python3"]}}}
---

# Email 📧

Email management and automation with attachment support.

## Features

- Send emails with attachments
- Support for multiple email providers (Gmail, Outlook, Yahoo, etc.)
- HTML and plain text email support
- CC and BCC recipients
- Test email functionality
- Secure TLS/SSL connections

## Setup Instructions

### 1. Configure Email Credentials

Create a configuration file `email_config.json` in your workspace:

```json
{
  "smtp_server": "smtp.gmail.com",
  "smtp_port": 587,
  "username": "[email protected]",
  "password": "your-app-password",
  "sender_name": "OpenClaw Assistant",
  "use_tls": true,
  "use_ssl": false
}
```

### 2. For Gmail Users (Recommended)

1. Enable 2-factor authentication on your Google account
2. Generate an App Password:
   - Go to https://myaccount.google.com/security
   - Under "Signing in to Google," select "App passwords"
   - Generate a new app password for "Mail"
   - Use this 16-character password in your config

### 3. Alternative: Environment Variables

Set these environment variables instead of using a config file:

```bash
# Windows
set SMTP_SERVER=smtp.gmail.com
set SMTP_PORT=587
set [email protected]
set EMAIL_PASSWORD=your-app-password
set EMAIL_SENDER_NAME="OpenClaw Assistant"

# macOS/Linux
export SMTP_SERVER=smtp.gmail.com
export SMTP_PORT=587
export [email protected]
export EMAIL_PASSWORD=your-app-password
export EMAIL_SENDER_NAME="OpenClaw Assistant"
```

## Usage Examples

### Send a Simple Email
```bash
python email_sender.py --to "[email protected]" --subject "Hello" --body "This is a test email"
```

### Send Email with Attachment
```bash
python email_sender.py --to "[email protected]" --subject "Report" --body "Please find attached" --attachment "report.pdf" --attachment "data.xlsx"
```

### Send Test Email
```bash
python email_sender.py --to "[email protected]" --test
```

### Using with OpenClaw Commands
```
"Send email to [email protected] with subject Meeting Notes and body Here are the notes from today's meeting"
"Send test email to verify configuration"
"Email the report.pdf file to [email protected]"
```

## Supported Email Providers

| Provider | SMTP Server | Port | TLS |
|----------|-------------|------|-----|
| Gmail | smtp.gmail.com | 587 | Yes |
| Outlook/Office365 | smtp.office365.com | 587 | Yes |
| Yahoo | smtp.mail.yahoo.com | 587 | Yes |
| QQ Mail | smtp.qq.com | 587 | Yes |
| Custom SMTP | your.smtp.server.com | 587/465 | As configured |

## Python API Usage

```python
from email_sender import EmailSender

# Initialize with config file
sender = EmailSender("email_config.json")

# Send email with attachment
result = sender.send_email(
    to_email="[email protected]",
    subject="Important Document",
    body="Please review the attached document.",
    attachments=["document.pdf", "data.csv"]
)

if result["success"]:
    print(f"Email sent with {result['attachments']} attachments")
else:
    print(f"Error: {result['error']}")
```

## Troubleshooting

### Common Issues:

1. **Authentication Failed**
   - Verify your username and password
   - For Gmail: Use app password instead of regular password
   - Check if 2FA is enabled

2. **Connection Refused**
   - Verify SMTP server and port
   - Check firewall settings
   - Try different port (465 for SSL)

3. **Attachment Too Large**
   - Most providers limit attachments to 25MB
   - Consider compressing files or using cloud storage links

## Security Notes

- Never commit email credentials to version control
- Use environment variables for production deployments
- Regularly rotate app passwords
- Consider using dedicated email accounts for automation

Overview

This skill provides email management and automation across multiple providers with attachment support. It sends HTML or plain text messages, supports CC/BCC, and secures connections via TLS/SSL. It is designed for programmatic sending, testing, searching, and simple organization tasks.

How this skill works

The skill connects to SMTP servers using credentials supplied via a JSON config or environment variables, negotiates TLS/SSL as configured, and composes messages with optional attachments and recipient fields (To, CC, BCC). It validates responses from the SMTP server and returns structured success/error information. Common provider defaults are included for Gmail, Outlook/Office365, Yahoo, and others, while custom SMTP hosts are supported by specifying server and port.

When to use it

  • Automate routine notifications from scripts or applications
  • Send reports or generated files as email attachments
  • Verify SMTP configuration with a test email
  • Batch-send alerts or meeting summaries
  • Integrate email sending into CI/CD or workflow automations

Best practices

  • Store credentials in environment variables or a secrets manager rather than committing to source control
  • Enable two-factor authentication and use provider-specific app passwords where supported
  • Use TLS on port 587 or SSL on 465 depending on provider recommendations
  • Compress or link large files to avoid attachment size limits (commonly ~25MB)
  • Rotate automation credentials regularly and use dedicated accounts for automated sends

Example use cases

  • Send daily build/test reports with attached logs or artifacts to a team distribution list
  • Email generated invoices or receipts to customers with PDF attachments
  • Trigger alerts from monitoring scripts to on-call staff with priority and context
  • Automatically distribute meeting notes and action items after a meeting
  • Run a send-test command to confirm SMTP settings before launching an automated campaign

FAQ

How do I keep my password secure?

Use environment variables or a secrets manager and never commit credentials to version control. Prefer provider app passwords when available.

What if attachments exceed the provider size limit?

Compress files, split attachments, or upload to cloud storage and send a download link in the email body.

Which ports and settings should I use?

Use port 587 with TLS for modern providers. Port 465 is common for SSL. Verify provider documentation and firewall rules if connection fails.