A simple mail client CLI
Project description
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.tomlwith just alias, so one can config per project email
Setup
1. Create App-Specific Password
- Go to appleid.apple.com
- Sign in and navigate to "Sign-In and Security"
- Select "App-Specific Passwords"
- Click the "+" button to generate a new password
2. Create iCloud Email Alias (optional)
- Go to iCloud Mail settings
- Click Settings → Accounts → Add Alias
- Create an alias (e.g., yourname+smail@icloud.com)
- 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
securitycommand
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simplemail_cli-0.1.1.tar.gz.
File metadata
- Download URL: simplemail_cli-0.1.1.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
349ef4da4f3558bc633564c2f5bf96cc13173a0724693ff23f807e21f7be0563
|
|
| MD5 |
808b02783c03a611875dec8b5241282f
|
|
| BLAKE2b-256 |
1ba4375912649e469664a7ab8f6393a5bc07c0c36e686a61871417ef1aefe18a
|
Provenance
The following attestation bundles were made for simplemail_cli-0.1.1.tar.gz:
Publisher:
publish.yml on adriangalilea/smail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
simplemail_cli-0.1.1.tar.gz -
Subject digest:
349ef4da4f3558bc633564c2f5bf96cc13173a0724693ff23f807e21f7be0563 - Sigstore transparency entry: 240043177
- Sigstore integration time:
-
Permalink:
adriangalilea/smail@b54d783e9cb3c1c61133e5d19c52ac5d579eb377 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/adriangalilea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b54d783e9cb3c1c61133e5d19c52ac5d579eb377 -
Trigger Event:
push
-
Statement type:
File details
Details for the file simplemail_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: simplemail_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b915fef8f2d6e9a22f4de21f01f4401b30e62a4f148d56912c0cc30f5df8b3c2
|
|
| MD5 |
64e9d793dbbcfa5e6632bf3416e0cb43
|
|
| BLAKE2b-256 |
cc29152327bad75a587c60a1937c12191d7fe0093b23ca1af8f9eb3f9384d848
|
Provenance
The following attestation bundles were made for simplemail_cli-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on adriangalilea/smail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
simplemail_cli-0.1.1-py3-none-any.whl -
Subject digest:
b915fef8f2d6e9a22f4de21f01f4401b30e62a4f148d56912c0cc30f5df8b3c2 - Sigstore transparency entry: 240043181
- Sigstore integration time:
-
Permalink:
adriangalilea/smail@b54d783e9cb3c1c61133e5d19c52ac5d579eb377 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/adriangalilea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b54d783e9cb3c1c61133e5d19c52ac5d579eb377 -
Trigger Event:
push
-
Statement type: