Himalaya
CLI email client supporting IMAP, SMTP, Maildir, and notmuch. Scriptable and composable — designed for use in scripts and with tools like fzf.
Install
# Nix
nix-env -iA nixpkgs.himalaya
# Cargo
cargo install himalayaConfig (~/.config/himalaya/config.toml)
[accounts.personal]
default = true
email = "me@example.com"
display-name = "Angelo"
backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "me@example.com"
backend.passwd.type = "command"
backend.passwd.cmd = "pass show email/personal"
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.example.com"
message.send.backend.port = 465
message.send.backend.encryption.type = "tls"
message.send.backend.login = "me@example.com"
message.send.backend.passwd.type = "command"
message.send.backend.passwd.cmd = "pass show email/personal"Commands
himalaya list # list folders
himalaya envelope list # list messages in INBOX
himalaya envelope list -f Sent # specific folder
himalaya message read <id> # read a message
himalaya message write # compose (opens $EDITOR)
himalaya message reply <id> # reply
himalaya message forward <id> # forward
himalaya message move <id> Trash # move to folder
himalaya message delete <id> # delete
# Multiple accounts
himalaya -a work envelope listComposing
Opens $EDITOR with a pre-filled template. Save and quit to send, or save as draft and quit without sending.
Scripting example
# List unread message subjects with fzf
himalaya envelope list --filter "not:seen" \
| fzf --with-nth=2.. \
| awk '{print $1}' \
| xargs himalaya message read