Introduction
# Himalaya Email CLI
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
## References
- `references/configuration.md` (config file setup + IMAP/SMTP authentication) - `references/message-composition.md` (MML syntax for composing emails)
## Prerequisites
1. Himalaya CLI installed (`himalaya --version` to verify) 2. A configuration file at `~/.config/himalaya/config.toml` 3. IMAP/SMTP credentials configured (password stored securely)
## Configuration Setup
Run the interactive wizard to set up an account: ```bash himalaya account configure ```
Or create `~/.config/himalaya/config.toml` manually: ```toml [accounts.personal] email = "[email protected]" display-name = "Your Name" default = true
backend.type = "imap" backend.host = "imap.example.com" backend.port = 993 backend.encryption.type = "tls" backend.login = "[email protected]" backend.auth.type = "password" backend.auth.cmd = "pass show email/imap" # or use keyring
message.send.backend.type = "smtp" message.send.backend.host = "smtp.example.com" message.send.backend.port = 587 message.send.backend.encryption.type = "start-tls" message.send.backend.login = "[email protected]" message.send.backend.auth.type = "password" message.send.backend.auth.cmd = "pass show email/smtp" ```
## Common Operations
### List Folders
```bash himalaya folder list ```
### List Emails
List emails in INBOX (default): ```bash himalaya envelope list ```
List emails in a specific folder: ```bash himalaya envelope list --folder "Sent" ```
List with pagination: ```bash himalaya envelope list --page 1 --page-size 20 ```
### Search Emails
```bash himalaya envelope list from [email protected] subject meeting ```
### Read an Email
Read email by ID (shows plain text): ```bash himalaya message read 42 ```
Export raw MIME: ```bash himalaya message export 42 --full ```
### Reply to an Email
Interactive reply (opens $EDITOR): ```bash himalaya message reply 42 ```
Reply-all: ```bash himalaya message reply 42 --all ```
### Forward an Email
```bash himalaya message forward 42 ```
### Write a New Email
Interactive compose (opens $EDITOR): ```bash himalaya message write ```
Send directly using template: ```bash cat << 'EOF' | himalaya template send From: [email protected] To: [email protected] Subject: Test Message
Hello from Himalaya! EOF ```
Or with headers flag: ```bash himalaya message write -H "To:[email protected]" -H "Subject:Test" "Message body here" ```
### Move/Copy Emails
Move to folder: ```bash himalaya message move 42 "Archive" ```
Copy to folder: ```bash himalaya message copy 42 "Important" ```
### Delete an Email
```bash himalaya message delete 42 ```
### Manage Flags
Add flag: ```bash himalaya flag add 42 --flag seen ```
Remove flag: ```bash himalaya flag remove 42 --flag seen ```
## Multiple Accounts
List accounts: ```bash himalaya account list ```
Use a specific account: ```bash himalaya --account work envelope list ```
## Attachments
Save attachments from a message: ```bash himalaya attachment download 42 ```
Save to specific directory: ```bash himalaya attachment download 42 --dir ~/Downloads ```
## Output Formats
Most commands support `--output` for structured output: ```bash himalaya envelope list --output json himalaya envelope list --output plain ```
## Debugging
Enable debug logging: ```bash RUST_LOG=debug himalaya envelope list ```
Full trace with backtrace: ```bash RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list ```
## Tips
- Use `himalaya --help` or `himalaya <command> --help` for detailed usage. - Message IDs are relative to the current folder; re-list after folder changes. - For composing rich emails with attachments, use MML syntax (see `references/message-composition.md`). - Store passwords securely using `pass`, system keyring, or a command that outputs the password.