Email management and automation. Send, read, search, and organize emails across multiple providers.
Email management and automation with attachment support.
Create a configuration file email_config.json in your workspace:
{
"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
}
Set these environment variables instead of using a config file:
# 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"
python email_sender.py --to "[email protected]" --subject "Hello" --body "This is a test email"
python email_sender.py --to "[email protected]" --subject "Report" --body "Please find attached" --attachment "report.pdf" --attachment "data.xlsx"
python email_sender.py --to "[email protected]" --test
"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]"
| 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 |
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")