.github | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
install.sh | ||
LICENSE | ||
README.md |
📫 Himalaya [WIP]
Minimalist CLI email client, written in Rust.
Table of contents
Motivation
Bringing emails to the terminal is a pain. The mainstream TUI, (neo)mutt, takes time to configure. The default mapping is not intuitive when coming from the Vim environment. It is even scary to use at the beginning, since you are dealing with sensitive data!
The aim of Himalaya is to extract the email logic into a simple (yet solid) CLI API that can be used either directly from the terminal or UIs. It gives users more flexibility.
Installation
curl -sSL https://raw.githubusercontent.com/soywod/himalaya/master/install.sh | bash
See wiki section for more information.
Configuration
# ~/.config/himalaya/config.toml
name = "Your full name"
downloads-dir = "/abs/path/to/downloads"
# Himalaya supports the multi-account
# Each account should be inside a TOML section
[gmail]
default = true
email = "my.email@gmail.com"
imap-host = "imap.gmail.com"
imap-port = 993
imap-login = "test@gmail.com"
imap-passwd_cmd = "pass show gmail"
smtp-host = "smtp.gmail.com"
smtp-port = 487
smtp-login = "test@gmail.com"
smtp-passwd_cmd = "pass show gmail"
[posteo]
name = "Your overriden full name"
downloads-dir = "/abs/path/to/overriden/downloads"
email = "test@posteo.net"
imap-host = "posteo.de"
imap-port = 993
imap-login = "test@posteo.net"
imap-passwd_cmd = "security find-internet-password -gs posteo -w"
smtp-host = "posteo.de"
smtp-port = 487
smtp-login = "test@posteo.net"
smtp-passwd_cmd = "security find-internet-password -gs posteo -w"
# [other accounts]
# ...
See wiki section for more information.
Usage
Himalaya 0.2.0
soywod <clement.douin@posteo.net>
📫 Minimalist CLI email client
USAGE:
himalaya [OPTIONS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --account <STRING> Name of the account to use
-o, --output <STRING> Format of the output to print [default: text] [possible values: text, json]
SUBCOMMANDS:
attachments Downloads all attachments from an email
forward Forwards an email
help Prints this message or the help of the given subcommand(s)
list Lists emails sorted by arrival date
mailboxes Lists all available mailboxes
read Reads text bodies of an email
reply Answers to an email
save Saves a raw message in the given mailbox
search Lists emails matching the given IMAP query
send Sends a raw message
template Generates a message template
write Writes a new email
See wiki section for more information.
List mailboxes
Shows mailboxes in a basic table.
See wiki section for more information.
List messages
Shows messages in a basic table.
See wiki section for more information.
Search messages
Shows filtered messages in a basic table. The query should follow the RFC-3501.
See wiki section for more information.
Download attachments
Downloads all attachments directly to the downloads-dir
.
See wiki section for more information.
Read a message
Shows the text content of a message (text/plain
if exists, otherwise
text/html
). Can be overriden by the --mime-type
option.
See wiki section for more information.
Write a new message
Opens your default editor (from the $EDITOR
environment variable) to compose
a new message.
himalaya write
See wiki section for more information.
Reply to a message
Opens your default editor to reply to a message.
himalaya reply --all 5123
See wiki section for more information.
Forward a message
Opens your default editor to forward a message.
himalaya forward 5123
See wiki section for more information.
Credits
- IMAP RFC3501
- Iris, the himalaya predecessor
- isync, an email synchronizer for offline usage
- NeoMutt, an email terminal user interface
- Alpine, an other email terminal user interface
- mutt-wizard, a tool over NeoMutt and isync
- rust-imap, a rust IMAP lib