使用 IMAP 读取、搜索、发送、删除、移动和标记 Gmail;需提供 GMAIL_IMAP_USER( Gmail 地址)和 GMAIL_IMAP_PASSWORD( Google 应用密码)环境变量。
All Gmail access uses IMAP. Credentials are read from environment variables — never printed.
Set these environment variables before use:
VariableDescriptionGMAIL_IMAP_USERYour Gmail address (e.g. user@gmail.com)GMAIL_IMAP_PASSWORDA Google App Password (not your account password)
Generate an App Password at: https://myaccount.google.com/apppasswords (requires 2FA enabled)
bash
# Locate the script (adjust SKILL_DIR to match your install location):
# Default: ~/.openclaw/skills/gmail-imap
# Custom: <workspace>/skills/gmail-imap
SCRIPT="$SKILL_DIR/scripts/gmail_imap.py"
# List inbox (most recent 20)
"$SCRIPT" list
# List with custom limit
"$SCRIPT" list --limit 50
# List unread only (shorthand)
"$SCRIPT" list --unread
# List unread with limit
"$SCRIPT" list --unread --limit 10
# Search by sender (IMAP header search)
"$SCRIPT" list --search 'FROM "boss@example.com"'
# Full-text search (Gmail X-GM-RAW — searches body + headers)
"$SCRIPT" search "invoice"
"$SCRIPT" search "from:boss@example.com is:unread" --limit 5
"$SCRIPT" search "subject:meeting this week"
# Read a message (by UID shown in list output)
"$SCRIPT" read <uid>
# Read from a specific folder
"$SCRIPT" read <uid> --folder "[Gmail]/All Mail"
# Delete (moves to [Gmail]/Trash — correct Gmail deletion)
"$SCRIPT" trash <uid>
# Move to a label/folder
"$SCRIPT" move <uid> "Work"
# Send email
"$SCRIPT" send --to recipient@example.com --subject "Hello" --body "Message text"
Never use the standard IMAP \Deleted flag on Gmail — it only archives, it does not delete.
Always use trash <uid> which moves to [Gmail]/Trash. The script handles this correctly.
Set in env (never output raw password):
GMAIL_IMAP_USER — Gmail addressGMAIL_IMAP_PASSWORD — App password (generate at myaccount.google.com/apppasswords)For folder names, search syntax, direct Python IMAP usage, and connection details: → See references/gmail-imap-reference.md