email by aiskillstore
Email operations skill for sending, fetching, and reading emails via IMAP/SMTP.Uses curl with OpenSSL/LibreSSL for reliable TLS compatibility with Tencent Enterprise Mail and other providers.Credentials are securely stored in macOS Keychain.
Content & Writing
85 Stars
2 Forks
Updated Jan 19, 2026, 04:39 AM
Why Use This
This skill provides specialized capabilities for aiskillstore's codebase.
Use Cases
- Developing new features in the aiskillstore repository
- Refactoring existing code to follow aiskillstore standards
- Understanding and working with aiskillstore's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Skill Stats
SKILL.md 285 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: email
version: 0.0.2
author: 7Sageer, Claude
description: |
Email operations skill for sending, fetching, and reading emails via IMAP/SMTP.
Uses curl with OpenSSL/LibreSSL for reliable TLS compatibility with Tencent Enterprise Mail and other providers.
Credentials are securely stored in macOS Keychain.
when_to_use: |
Use this skill when the user requests email-related operations:
- Sending emails ("send an email to...", "email X about...", "发邮件给...")
- Checking emails ("check my email", "any new emails?", "查看邮件")
- Reading specific emails ("read email #5", "show me the latest email", "读取邮件")
- Email automation tasks ("notify me when...", "forward this to...")
---
# Email Operations Skill
## Overview
This skill provides email capabilities through direct IMAP/SMTP protocol access using curl. It supports:
- **Sending emails** via SMTP with TLS
- **Fetching email lists** via IMAP
- **Reading email content** by ID
- **Multi-account support** with secure credential storage
## Architecture
- **Protocol**: Direct IMAP (port 993) and SMTP (port 465) over TLS
- **Security**: Passwords stored in macOS Keychain, never in config files
- **Compatibility**: Uses curl with OpenSSL/LibreSSL (better Tencent Enterprise Mail support than rustls)
- **Configuration**: YAML-based account management in `references/accounts.yaml`
## Available Scripts
### 1. Send Email (`send-email.sh`)
Send emails via SMTP with support for inline or file-based content.
**Usage:**
```bash
./scripts/send-email.sh -t [email protected] -s "Subject" -b "Message"
./scripts/send-email.sh -t [email protected] -s "Subject" -f message.txt
./scripts/send-email.sh -t [email protected] -c [email protected] -s "Subject" -b "Message"
```
**Parameters:**
- `-a ACCOUNT` - Account name (default: from accounts.yaml)
- `-t EMAIL` - Recipient email (required)
- `-c EMAIL` - CC recipient (optional)
- `-s TEXT` - Email subject (required)
- `-b TEXT` - Email body inline (required if no -f)
- `-f FILE` - Email body from file (required if no -b)
### 2. Fetch Emails (`fetch-emails.sh`)
Retrieve email headers from a mailbox.
**Usage:**
```bash
./scripts/fetch-emails.sh # Fetch 10 latest from INBOX
./scripts/fetch-emails.sh -n 20 # Fetch 20 latest
./scripts/fetch-emails.sh -m "Sent" # Fetch from Sent folder
```
**Parameters:**
- `-a ACCOUNT` - Account name (default: from accounts.yaml)
- `-m FOLDER` - Mailbox folder (default: INBOX)
- `-n N` - Number of emails to fetch (default: 10)
### 3. Read Email (`read-email.sh`)
Read full content of a specific email by ID.
**Usage:**
```bash
./scripts/read-email.sh 123 # Read full email
./scripts/read-email.sh -p HEADER 123 # Headers only
./scripts/read-email.sh -p BODY 123 # Body only
```
**Parameters:**
- `-a ACCOUNT` - Account name (default: from accounts.yaml)
- `-m FOLDER` - Mailbox folder (default: INBOX)
- `-p PART` - Part to retrieve: HEADER, BODY, or TEXT (default: TEXT)
- `EMAIL_ID` - Email ID (required, positional argument)
## Configuration
### Account Setup
Edit `references/accounts.yaml` to add email accounts:
```yaml
default_account: SUSTech
accounts:
SUSTech:
email: [email protected]
display_name: Hanrui Qi
imap:
host: imap.exmail.qq.com
port: 993
login: [email protected]
protocol: imaps
smtp:
host: smtp.exmail.qq.com
port: 465
login: [email protected]
protocol: smtps
```
### Password Management
Passwords are stored in macOS Keychain. Set them using:
```bash
# IMAP password
security add-generic-password \
-a "[email protected]" \
-s "email-imap-sustech" \
-w "your-password" \
-U
# SMTP password
security add-generic-password \
-a "[email protected]" \
-s "email-smtp-sustech" \
-w "your-password" \
-U
```
**Keychain service naming convention:**
- IMAP: `email-imap-{account_name_lowercase}`
- SMTP: `email-smtp-{account_name_lowercase}`
## Common Use Cases
### 1. Send a Quick Email
When user says: "Send an email to [email protected] about the meeting"
```bash
cd /Users/seven/Claude/.claude/skills/email
./scripts/send-email.sh \
-t [email protected] \
-s "Meeting Discussion" \
-b "Hi Alice, I wanted to follow up on our meeting..."
```
### 2. Check Recent Emails
When user says: "Check my email" or "Any new emails?"
```bash
cd /Users/seven/Claude/.claude/skills/email
./scripts/fetch-emails.sh -n 5
```
Parse the output and summarize for the user.
#### Search / Filter (Pipe + grep/rg)
This is a lightweight way to "search" within the recent emails that `fetch-emails.sh` fetched (headers only: From/Subject/Date).
```bash
cd /Users/seven/Claude/.claude/skills/email
# 任意关键字(例如 github),同时保留邮件 ID 行(便于后续 read)
./scripts/fetch-emails.sh -n 200 | rg -i "github" -B 2
# 主题关键字(建议用 rg;没有 rg 就用 grep -E)
./scripts/fetch-emails.sh -n 200 | rg "主题:.*会议" -B 2
./scripts/fetch-emails.sh -n 200 | grep -E "主题:.*会议" -B 2
# 发件人关键字
./scripts/fetch-emails.sh -n 200 | rg "发件人:.*alice" -B 1
# 提取匹配到的邮件 ID,然后读取正文(取第一个匹配)
email_id="$(
./scripts/fetch-emails.sh -n 200 |
rg -i "github" -B 2 |
sed -nE 's/.*邮件 #([0-9]+).*/\1/p' |
head -n 1
)"
./scripts/read-email.sh "$email_id"
```
If `email_id` is empty, increase `-n` (fetch more recent emails) or adjust the keyword/regex.
### 3. Read Specific Email
When user says: "Read email #3" or "Show me the latest email"
```bash
cd /Users/seven/Claude/.claude/skills/email
./scripts/read-email.sh 3
```
### 4. Email Automation
Combine with other skills for automation:
- Check calendar → Send reminder emails
- Monitor inbox → Create system notifications
- Fetch emails → Parse and extract information
## Error Handling
### Common Issues
1. **Authentication Failed**
- Verify Keychain passwords are set correctly
- Check if IMAP/SMTP is enabled in email provider settings
- For Tencent Enterprise Mail, use app-specific password
2. **Connection Timeout**
- Verify network connectivity
- Check firewall settings for ports 993 (IMAP) and 465 (SMTP)
- Confirm host and port in accounts.yaml
3. **TLS Handshake Failed**
- This skill uses curl with OpenSSL/LibreSSL for better compatibility
- If issues persist, check email provider's TLS requirements
## Security Considerations
- **Never log or display passwords** - they're in Keychain only
- **Confirm before sending** - especially for important emails
- **Validate recipients** - check email addresses before sending
- **Respect privacy** - don't read emails unless explicitly requested
## Provider-Specific Notes
### Tencent Enterprise Mail (exmail.qq.com)
- IMAP: imap.exmail.qq.com:993 (SSL/TLS)
- SMTP: smtp.exmail.qq.com:465 (SSL/TLS)
- Requires IMAP/SMTP enabled in settings
- Recommend using app-specific password
- Note: IMAP `SEARCH` for string criteria (e.g. `SUBJECT`/`FROM`/`HEADER`) may be unreliable on some Tencent Exmail servers; prefer client-side filtering via `fetch-emails.sh | rg/grep`.
### Gmail
- IMAP: imap.gmail.com:993
- SMTP: smtp.gmail.com:587 (STARTTLS)
- Requires "Less secure app access" or App Password
- May need OAuth2 for enhanced security
### Outlook/Office 365
- IMAP: outlook.office365.com:993
- SMTP: smtp.office365.com:587
- Requires modern authentication
## Technical Details
### Why curl instead of rustls?
The rustls TLS library has compatibility issues with some email providers (notably Tencent Enterprise Mail). curl with OpenSSL/LibreSSL provides:
- Better TLS handshake compatibility
- Wider cipher suite support
- Proven reliability with enterprise email systems
### IMAP vs POP3
This skill uses IMAP (not POP3) because:
- IMAP supports folder management
- Messages remain on server
- Better for multi-device access
- More flexible search and filtering
## Future Enhancements
Potential improvements (not yet implemented):
- Server-side IMAP SEARCH (subject/sender/date; provider-dependent)
- Attachment handling
- HTML email composition
- Email filtering and rules
- OAuth2 authentication support
- Batch operations
## References
- [RFC 3501 - IMAP4rev1](https://tools.ietf.org/html/rfc3501)
- [RFC 5321 - SMTP](https://tools.ietf.org/html/rfc5321)
- [curl IMAP documentation](https://curl.se/docs/manual.html)
- [macOS Keychain security command](https://ss64.com/osx/security.html)
Name Size