aiskillstore/email
| 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.
This is a copy. The original lives at comeonoliver/email.
npx skills add https://github.com/aiskillstore/marketplace --skill email
This skill provides email capabilities through direct IMAP/SMTP protocol access using curl. It supports:
references/accounts.yamlsend-email.sh)Send emails via SMTP with support for inline or file-based content.
Usage:
./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)fetch-emails.sh)Retrieve email headers from a mailbox.
Usage:
./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)read-email.sh)Read full content of a specific email by ID.
Usage:
./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)Edit references/accounts.yaml to add email accounts:
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
Passwords are stored in macOS Keychain. Set them using:
# 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:
email-imap-{account_name_lowercase}email-smtp-{account_name_lowercase}When user says: "Send an email to [email protected] about the meeting"
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..."
When user says: "Check my email" or "Any new emails?"
cd /Users/seven/Claude/.claude/skills/email
./scripts/fetch-emails.sh -n 5
Parse the output and summarize for the user.
This is a lightweight way to "search" within the recent emails that fetch-emails.sh fetched (headers only: From/Subject/Date).
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.
When user says: "Read email #3" or "Show me the latest email"
cd /Users/seven/Claude/.claude/skills/email
./scripts/read-email.sh 3
Combine with other skills for automation:
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.The rustls TLS library has compatibility issues with some email providers (notably Tencent Enterprise Mail). curl with OpenSSL/LibreSSL provides:
This skill uses IMAP (not POP3) because:
Potential improvements (not yet implemented):
Take aiskillstore/email from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.