Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Lightweight email manager with IMAP/SMTP support, advanced search, folder management, and attachment detection. Works with Zoho, Gmail, Outlook, and any IMAP/SMTP provider.
Lightweight email manager with IMAP/SMTP support, advanced search, folder management, and attachment detection. Works with Zoho, Gmail, Outlook, and any IMAP/SMTP provider.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
A fully self-contained email management skill for OpenClaw. Uses standard IMAP and SMTP protocols with zero external dependencies.
Search by sender (--from) Search by subject keywords (--subject) Filter by date range (--since, --before) Filter by read/unread status (--seen, --unseen) Search in email body (--body, warning: can be slow)
List all IMAP folders with folders command Move emails between folders with move command Automatic validation of folder existence
Automatic detection of attachments Display attachment details: Filename MIME type File size (formatted KB/MB) Shown in both read and search results
cd skills/portable-email-manager npm install Dependencies are bundled in package.json: nodemailer - SMTP email sending imap-simple - IMAP operations mailparser - Email parsing and attachment detection
Set these environment variables: export EMAIL_USER="your.email@domain.com" export EMAIL_PASS="your-app-password" Recommended: Use App Passwords for Gmail, Outlook, Zoho instead of main password.
Zoho Mail (default): Already configured for smtp.zoho.eu and imap.zoho.eu Generate App Password: https://accounts.zoho.eu/home#security/apppasswords Gmail: Edit scripts/email.js and change: host: 'smtp.gmail.com' // SMTP host: 'imap.gmail.com' // IMAP Enable 2FA and create App Password: https://myaccount.google.com/apppasswords Outlook/Hotmail: Edit to use smtp.office365.com / outlook.office365.com Port 587 for SMTP (TLS)
./scripts/email.js send "recipient@example.com" "Subject" "Email body text" Example: ./scripts/email.js send "boss@company.com" "Weekly Report" "Attached is this week's summary."
./scripts/email.js read [limit] Examples: # Read last 5 emails (default) ./scripts/email.js read # Read last 20 emails ./scripts/email.js read 20 Output includes: UID (unique ID for moving) From/To addresses Subject and date Attachment count and details Email body preview (first 500 chars)
./scripts/email.js search [options] Search Options: OptionDescriptionExample--from <email>Filter by sender--from "boss@company.com"--subject <text>Filter by subject keywords--subject "invoice"--since <date>Emails after date--since "Jan 1, 2026"--before <date>Emails before date--before "Feb 1, 2026"--unseenOnly unread emails--unseen--seenOnly read emails--seen--body <text>Search in body (slow!)--body "meeting"--limit <n>Max results--limit 10 Examples: # Find unread emails from specific sender ./scripts/email.js search --from "client@example.com" --unseen # Search by subject ./scripts/email.js search --subject "invoice" --limit 5 # Date range search ./scripts/email.js search --since "Jan 15, 2026" --before "Feb 1, 2026" # Search in body (use sparingly - can be slow) ./scripts/email.js search --body "quarterly review" # Combine multiple filters ./scripts/email.js search --from "boss@company.com" --subject "urgent" --unseen --limit 3
./scripts/email.js folders Shows hierarchical tree of all IMAP folders with attributes. Example output: ๐ INBOX ๐ Sent ๐ Archive ๐ Drafts ๐ Spam ๐ Trash
./scripts/email.js move <uid> <folder-name> Important: Get the uid from read or search output Folder name is case-sensitive Script validates folder exists before moving Examples: # First, find the email and note its UID ./scripts/email.js search --from "newsletter@example.com" # Output shows: UID: 12345 # Move to Archive folder ./scripts/email.js move 12345 "Archive" # Move to custom folder ./scripts/email.js move 67890 "Projects/Work" Error handling: If folder doesn't exist, shows list of available folders Validates UID exists before attempting move
./scripts/email.js help Shows complete usage guide with all commands and examples.
# Check unread emails ./scripts/email.js search --unseen --limit 10 # Move newsletters to folder ./scripts/email.js search --from "newsletter@site.com" --limit 1 ./scripts/email.js move <uid> "Newsletters"
# Search by sender and subject ./scripts/email.js search --from "client@example.com" --subject "proposal" # Search by date ./scripts/email.js search --since "Jan 20, 2026" --subject "meeting notes"
# Find old read emails ./scripts/email.js search --before "Dec 1, 2025" --seen --limit 50 # Move each to Archive (use UID from output) ./scripts/email.js move <uid> "Archive"
# Read recent emails and see attachment info ./scripts/email.js read 10 # Search output automatically shows: # - Number of attachments # - Filename, type, and size for each
Credentials never logged or stored in files TLS/SSL encryption for all connections App Passwords recommended over account passwords No data leaves your machine except IMAP/SMTP connections
Default configuration is optimized for Zoho Mail EU. To use another provider, edit scripts/email.js: // SMTP Configuration const smtpConfig = { host: 'smtp.your-provider.com', port: 465, // or 587 for TLS secure: true, // true for SSL (465), false for TLS (587) auth: { user: EMAIL_USER, pass: EMAIL_PASS } }; // IMAP Configuration const imapConfig = { imap: { user: EMAIL_USER, password: EMAIL_PASS, host: 'imap.your-provider.com', port: 993, tls: true, authTimeout: 20000 } };
Body search (--body) can be slow on large mailboxes - use sparingly Subject/From search is fast - uses IMAP server-side filtering Date filters are efficient Limit results with --limit for faster responses
"Authentication failed" Verify EMAIL_USER and EMAIL_PASS are set correctly Use App Password, not account password Check provider settings (2FA, less secure apps, etc.) "Folder not found" Use folders command to see exact folder names Folder names are case-sensitive Some providers use different names (e.g., "Sent Items" vs "Sent") "Connection timeout" Check firewall/network settings Verify IMAP/SMTP ports are accessible Try increasing authTimeout in config "No emails found" Check search criteria Verify emails exist in INBOX (not other folders) Try broader search (remove some filters)
โจ Advanced search with multiple filters ๐ Folder management (list, move) ๐ Attachment detection and info ๐จ Improved output formatting ๐ Comprehensive documentation
Basic send/read functionality Zoho Mail support IMAP/SMTP foundation
Tested with: โ Zoho Mail (EU & US) โ Gmail โ Outlook/Hotmail โ iCloud Mail โ Custom IMAP/SMTP servers
Use UIDs for automation: Save UIDs from search results to move emails programmatically Combine filters: Multiple filters create AND conditions for precise searches Folder organization: List folders first to plan your organization strategy Date format: Use natural language dates like "Jan 1, 2026" or "December 25, 2025" Attachment filtering: Look for "Attachments: X" in search output to find emails with files
ISC - Use freely in your OpenClaw setup.
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.