Skip to main content

smail

Minimal email client for iCloud. Perfect for iCloud email aliases.

Installation

# Install with uv (recommended)
uv tool install simplemail-cli

# Or use pipx
pipx install simplemail-cli

Features

  • Thread visualization with tree display
  • Rich formatting with unread indicators
  • Thread navigation (smail 0.1, smail 0.last)
  • Quick self-email (smail "reminder" "buy milk")
  • Secure keychain password storage
  • Reply tracking with proper threading
  • Archive emails to iCloud Archive folder
  • Unarchive emails (move back from Archive to Inbox)
  • Attachments
  • Performance optimization (connection reuse, parallel fetch)
  • local smail.toml with just alias, so one can config per project email

Setup

1. Create App-Specific Password

  1. Go to appleid.apple.com
  2. Sign in and navigate to "Sign-In and Security"
  3. Select "App-Specific Passwords"
  4. Click the "+" button to generate a new password

2. Create iCloud Email Alias (optional)

  1. Go to iCloud Mail settings
  2. Click Settings → Accounts → Add Alias
  3. Create an alias (e.g., yourname+smail@icloud.com)
  4. Use this alias in your smail config to keep CLI emails separate

3. Configure smail

# First run guides you through setup
smail

# Or manually create config
cat > ~/.config/smail/config.toml << EOF
email = "your@icloud.com"           # your email alias address, will send emails from here and only show emails for this account
login = "your.appleid@icloud.com"  # Apple ID if different from email
keychain = "your-keychain-service"
EOF

4. Add Password to Keychain

# Add password from command line (macOS)
security add-generic-password \
  -a "your.appleid@icloud.com" \
  -s "your-keychain-service" \
  -w "your-app-specific-password"

# Or let smail prompt you on first run
smail

Usage

# List & Read
smail                          # List emails
smail 0                        # Read email/thread
smail 0.1                      # Read specific message in thread
smail 0.last                   # Read newest message in thread

# Send
smail "Subject" "Body"                      # Send to self
smail user@example.com "Subject" "Body"     # Send to recipient

# Reply, Archive & Delete
smail reply "Quick reply"      # Reply to latest
smail 0 reply "Reply text"     # Reply to specific
smail 0 archive                # Archive email/thread
smail 0 delete                 # Delete email/thread

Security

  • Passwords are stored in macOS Keychain, never in files
  • Always use app-specific passwords, not your main Apple ID password
  • The keychain service name in config.toml should match the one used in the security command

Metadata

Release files for simplemail-cli 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simplemail-cli 0.1.1
File Size Uploaded
simplemail_cli-0.1.1.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simplemail-cli 0.1.1
File Interpreter ABI Platform
simplemail_cli-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.9 kB

Release files / simplemail_cli-0.1.1.tar.gz

Download URL simplemail_cli-0.1.1.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
349ef4da4f3558bc633564c2f5bf96cc13173a0724693ff23f807e21f7be0563
BLAKE2b-256 checksum
How to use checksums
1ba4375912649e469664a7ab8f6393a5bc07c0c36e686a61871417ef1aefe18a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 16, 2025.

Transparency log

Release files / simplemail_cli-0.1.1-py3-none-any.whl

Download URL simplemail_cli-0.1.1-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b915fef8f2d6e9a22f4de21f01f4401b30e62a4f148d56912c0cc30f5df8b3c2
BLAKE2b-256 checksum
How to use checksums
cc29152327bad75a587c60a1937c12191d7fe0093b23ca1af8f9eb3f9384d848
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 16, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page