Email Skill

SkillCommunication

Send and receive emails via local IMAP/SMTP mail server (GreenMail)

Then ask your AI: use the Email Skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.

What this skill tells your AI

The instructions your AI receives, as published by evolvent-ai/clawmark in skills/email/SKILL.md and read by Ahel’s review.

Send and receive emails through a local mail server. Use Python's imaplib and smtplib (standard library, no pip install needed).

Accounts are auto-created on first use — no setup needed.

Server Info

ProtocolHostPortTLS
IMAPgreenmail3143No
SMTPgreenmail3025No

Your email address and password will be provided in the task context.

Send Email

import smtplib
from email.mime.text import MIMEText

msg = MIMEText("Body text here", "plain", "utf-8")
msg["From"] = "your@address.com"
msg["To"] = "recipient@address.com"
msg["Subject"] = "Subject line"

with smtplib.SMTP("greenmail", 3025) as s:
    s.send_message(msg)

Read Emails

import imaplib
import email

imap = imaplib.IMAP4("greenmail", 3143)
imap.login("your@address.com", "your_password")
imap.select("INBOX")

_, data = imap.search(None, "ALL")
for num in data[0].split():
    _, msg_data = imap.fetch(num, "(RFC822)")
    msg = email.message_from_bytes(msg_data[0][1])
    print(f"From: {msg['From']}")
    print(f"Subject: {msg['Subject']}")
    if msg.is_multipart():
        for part in msg.walk():
            if part.get_content_type() == "text/plain":
                print(part.get_payload(decode=True).decode())
    else:
        print(msg.get_payload(decode=True).decode())

imap.logout()

Search Emails

# By sender
_, data = imap.search(None, '(FROM "someone@example.com")')

# By subject keyword
_, data = imap.search(None, '(SUBJECT "keyword")')

# Recent emails
import datetime
since = (datetime.date.today() - datetime.timedelta(days=7)).strftime("%d-%b-%Y")
_, data = imap.search(None, f'(SINCE {since})')

Signals

GitHub stars
123
Forks
11
Last commit
May 2026

Ahel review

  • K1binfo
    installs-packages

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
email-evolvent-ai
Source
github.com/evolvent-ai/clawmark