IMAP/SMTP Email Tool
name: imap-smtp-email
by cjboy007 · published 2026-04-01
$ claw add gh:cjboy007/cjboy007-sales-email-automation---
name: imap-smtp-email
description: Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, and other standard email providers.
metadata:
openclaw:
emoji: "📧"
requires:
env:
- IMAP_HOST
- IMAP_USER
- IMAP_PASS
- SMTP_HOST
- SMTP_USER
- SMTP_PASS
bins:
- node
- npm
primaryEnv: SMTP_PASS
---
# IMAP/SMTP Email Tool
Read, search, and manage email via IMAP protocol. Send email via SMTP. Supports Gmail, Outlook, 163.com, and any standard IMAP/SMTP server.
Configuration
Create `.env` in the skill folder or set environment variables:
# IMAP Configuration (receiving email)
IMAP_HOST=imap.gmail.com # Server hostname
IMAP_PORT=993 # Server port
IMAP_USER=your@email.com
IMAP_PASS=your_password
IMAP_TLS=true # Use TLS/SSL connection
IMAP_REJECT_UNAUTHORIZED=true # Set to false for self-signed certs
IMAP_MAILBOX=INBOX # Default mailbox
# SMTP Configuration (sending email)
SMTP_HOST=smtp.gmail.com # SMTP server hostname
SMTP_PORT=587 # SMTP port (587 for STARTTLS, 465 for SSL)
SMTP_SECURE=false # true for SSL (465), false for STARTTLS (587)
SMTP_USER=your@gmail.com # Your email address
SMTP_PASS=your_password # Your password or app password
SMTP_FROM=your@gmail.com # Default sender email (optional)
SMTP_REJECT_UNAUTHORIZED=true # Set to false for self-signed certsCommon Email Servers
| Provider | IMAP Host | IMAP Port | SMTP Host | SMTP Port |
|----------|-----------|-----------|-----------|-----------|
| 163.com | imap.163.com | 993 | smtp.163.com | 465 |
| Gmail | imap.gmail.com | 993 | smtp.gmail.com | 587 |
| Outlook | outlook.office365.com | 993 | smtp.office365.com | 587 |
| QQ Mail | imap.qq.com | 993 | smtp.qq.com | 587 |
**Important for Gmail:**
**Important for 163.com:**
IMAP Commands (Receiving Email)
check
Check for new/unread emails.
node scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h]Options:
fetch
Fetch full email content by UID.
node scripts/imap.js fetch <uid> [--mailbox INBOX]download
Download all attachments from an email, or a specific attachment.
node scripts/imap.js download <uid> [--mailbox INBOX] [--dir <path>] [--file <filename>]Options:
search
Search emails with filters.
node scripts/imap.js search [options]
Options:
--unseen Only unread messages
--seen Only read messages
--from <email> From address contains
--subject <text> Subject contains
--recent <time> From last X time (e.g., 30m, 2h, 7d)
--since <date> After date (YYYY-MM-DD)
--before <date> Before date (YYYY-MM-DD)
--limit <n> Max results (default: 20)
--mailbox <name> Mailbox to search (default: INBOX)mark-read / mark-unread
Mark message(s) as read or unread.
node scripts/imap.js mark-read <uid> [uid2 uid3...]
node scripts/imap.js mark-unread <uid> [uid2 uid3...]list-mailboxes
List all available mailboxes/folders.
node scripts/imap.js list-mailboxesSMTP Commands (Sending Email)
send
Send email via SMTP.
node scripts/smtp.js send --to <email> --subject <text> [options]**Required:**
**Optional:**
**Examples:**
# Simple text email
node scripts/smtp.js send --to recipient@example.com --subject "Hello" --body "World"
# HTML email
node scripts/smtp.js send --to recipient@example.com --subject "Newsletter" --html --body "<h1>Welcome</h1>"
# Email with attachment
node scripts/smtp.js send --to recipient@example.com --subject "Report" --body "Please find attached" --attach report.pdf
# Multiple recipients
node scripts/smtp.js send --to "a@example.com,b@example.com" --cc "c@example.com" --subject "Update" --body "Team update"Development Email Workflow
Important Principles
**Template is for structure reference only - always customize content for each recipient.**
**Wrong (avoid):**
**Correct approach:**
Pre-send Checklist
1. [ ] **Collect customer information**
- Company name
- Country/region
- Industry/business type
- Contact person name (if available)
- Email address
2. [ ] **Generate personalized email content**
- Customize greeting with customer location/industry
- Adjust tone and focus for different markets
- Generate HTML file or prepare `--body` content
3. [ ] **Prepare attachments**
- Product catalog PDF
- Custom quotation (if applicable)
- Verify all file paths are correct
4. [ ] **Send complete email in one message**
- Include all attachments
- Personalized content
- Professional signatureComplete Send Command Example
cd $WORKSPACE/skills/imap-smtp-email
node scripts/smtp.js send \
--to "customer@example.com" \
--subject "Product Catalog from Your Company" \
--html \
--body-file "/path/to/customized-email.html" \
--attach "/path/to/catalogue.pdf,/path/to/quotation.pdf"OKKI CRM Integration (Optional)
This skill supports automatic sync with OKKI CRM for tracking email communications.
Configuration
Set environment variables in `.env`:
# OKKI CRM Integration
OKKI_CLI_PATH=/path/to/okki.py
VECTOR_SEARCH_PATH=/path/to/search-customers.py
PYTHON_VENV_PATH=python3Features
Manual Sync Command
node okki-sync.js quotation '{"dataFile":"/path/to/data.json","quotationNo":"QT-xxx"}'Discord Review Integration (Optional)
Configure Discord channel for email review workflow.
Configuration
Edit `config/discord-config.json`:
{
"channel_id": "<your-discord-channel-id>",
"guild_id": "",
"review_channel": "email-review",
"timeout_minutes": 30
}Set environment variable:
DISCORD_BOT_TOKEN=your-discord-bot-tokenDependencies
npm installSecurity Notes
Troubleshooting
**Connection timeout:**
**Authentication failed:**
**TLS/SSL errors:**
Related Files
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...