portable-email-manager
Send and read emails via any IMAP/SMTP provider (Zoho, Outlook, Gmail, etc.). Fully self-contained Node.js implementation; no external system binaries required. Ideal for environments without root access.
Install
mkdir -p .claude/skills/portable-email-manager && curl -L -o skill.zip "https://mcp.directory/api/skills/download/7538" && unzip -o skill.zip -d .claude/skills/portable-email-manager && rm skill.zipInstalls to .claude/skills/portable-email-manager
About this skill
Email Manager Lite v0.2
A fully self-contained email management skill for OpenClaw. Uses standard IMAP and SMTP protocols with zero external dependencies.
✨ What's New in v0.2
🔍 Advanced Search & Filters
- 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)
📁 Folder Management
- List all IMAP folders with
folderscommand - Move emails between folders with
movecommand - Automatic validation of folder existence
📎 Attachment Information
- Automatic detection of attachments
- Display attachment details:
- Filename
- MIME type
- File size (formatted KB/MB)
- Shown in both
readandsearchresults
🔧 Installation
cd skills/portable-email-manager
npm install
Dependencies are bundled in package.json:
nodemailer- SMTP email sendingimap-simple- IMAP operationsmailparser- Email parsing and attachment detection
🔐 Credentials
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.
Provider Setup
Zoho Mail (default):
- Already configured for
smtp.zoho.euandimap.zoho.eu - Generate App Password: https://accounts.zoho.eu/home#security/apppasswords
Gmail:
- Edit
scripts/email.jsand 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)
📖 Usage
Send Email
./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."
Read Recent Emails
./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)
Advanced Search
./scripts/email.js search [options]
Search Options:
| Option | Description | Example |
|---|---|---|
--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" |
--unseen | Only unread emails | --unseen |
--seen | Only 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
List Folders
./scripts/email.js folders
Shows hierarchical tree of all IMAP folders with attributes.
Example output:
📁 INBOX
📁 Sent
📁 Archive
📁 Drafts
📁 Spam
📁 Trash
Move Email to Folder
./scripts/email.js move <uid> <folder-name>
Important:
- Get the
uidfromreadorsearchoutput - 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
Help
./scripts/email.js help
Shows complete usage guide with all commands and examples.
🎯 Use Cases
Daily Email Triage
# 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"
Find Specific Email
# 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"
Archive Old Emails
# 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"
Check for Attachments
# 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
🔒 Security
- 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
⚙️ Configuration
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
}
};
🚀 Performance Notes
- 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
--limitfor faster responses
🐛 Troubleshooting
"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
folderscommand 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
authTimeoutin config
"No emails found"
- Check search criteria
- Verify emails exist in INBOX (not other folders)
- Try broader search (remove some filters)
📝 Version History
v0.2.0 (Current)
- ✨ Advanced search with multiple filters
- 📁 Folder management (list, move)
- 📎 Attachment detection and info
- 🎨 Improved output formatting
- 📚 Comprehensive documentation
v0.1.0
- Basic send/read functionality
- Zoho Mail support
- IMAP/SMTP foundation
🤝 Compatibility
Tested with:
- ✅ Zoho Mail (EU & US)
- ✅ Gmail
- ✅ Outlook/Hotmail
- ✅ iCloud Mail
- ✅ Custom IMAP/SMTP servers
💡 Tips
- 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
📄 License
ISC - Use freely in your OpenClaw setup.
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversConnect your free email services or Mailchimp for seamless automation. Manage emails efficiently with IMAP and SMTP supp
Manage your emails effortlessly with Gmail, the email management software that organizes, sends, and retrieves messages
Securely access and manage your emails domains with IMAP Apple and SMTP. Enjoy reliable email delivery with IMAP/SMTP su
Gmail: Manage emails with natural language — search, read, send (with attachments), delete, and follow conversation thre
Manage 163.com email via IMAP/SMTP — read unread mails, send text/HTML emails with attachments, and save attachments usi
Use Mac Messages, the top iMessage app for PC, to send and read iMessages from your desktop with contact and group chat
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.