Find a file
Manos Pitsidianakis 9f7dcfc21e
Bump version to 0.8.10
Highlights:
  ===========

  - added pipe-attachment command
  - added sample scripts for using meli as a mailto scheme handler in
    contrib/
  - fixed GPG encryption with libgpgme

  Contributors in alphabetical order:
  ===================================

  - Manos Pitsidianakis
  - Matthias Geiger

  Added
  =====

  - 5e77821f mail/view: add pipe-attachment command in PR #540
    "mail/view: add pipe-attachment command"
  - fa896f6b contrib: add mailto: scheme handler scripts
  - 00ce9660
    melib/backends: add as_any/as_any_mut methods to BackendMailbox
  - fd243fa5 maildir: add mailbox creation tests
  - de65eec3 meli/accounts: add mailbox_by_path() tests in PR #535
    "Rework maildir mailbox path logic, add tests"
  - 6b363601 melib/gpgme: impl Display for gpgme::Key

  Bug Fixes
  =========

  - 60c90d75 melib/attachments: ensure MIME boundary prefixed with CRLF
  - 3433c5c3 compose/pgp: rewrite key selection logic in PR #541 "More
    gpgme/PGP fixes again"
  - 12de82e7 melib/conf: fix mutt_alias_file not being validated in PR
    #550 "Remove sealed_test dependency"
  - c8e055a7 Fix version migrations being triggered backwards in PR #557
    "Fix version migrations being triggered backwards"
  - efab99fd
    terminal: check for NO_COLOR env var without unicode validation
  - 36a63e88 melib/maildir: rewrite create_mailbox()
  - fcab855f view: ensure envelope headers are always populated in PR
    #538 "view: ensure envelope headers are always populated"
  - 84564f44 mailcap: don't drop File before opening it in PR #552
    "mailcap: don't drop File before opening it"

  Changes
  =======

  - ed85da51 Remove sealed_test dependency

  Refactoring
  ===========

  - 03df2ac1 meli/utilities: add print utilities for tests
  - 18e9d5c1 conf.rs: impl From<melib::AccountSettings> for AccountConf
  - 1f2fec19 Fix 1.83.0 lints in PR #536 "CI: Add action to check for
    DCO signoffs in PRs"
  - 192ecea2 compose/gpg.rs: Fix msrv regression

  Documentation
  =============

  - 4a61a4b8 melib: include README.md as preamble of crate rustdocs
  - 80e53471 BUILD.md: move melib specific stuff to melib/README.md
  - 91a17ece melib/README.md: mention sqlite3-static feature
  - b77a691b meli/README.md: Add cargo features section in PR #549
    "Document cargo features in READMEs"
  - 91dc271d contrib: add a README.md file
  - 2e900be6 contrib/README.md: add section about oauth2.py
  - 07812d2c contrib/README.md: elaborate a bit about mailto in PR #545
    "Add external mailto: handler support via scripts in contrib"
  - e784e8d2 scripts: add markdown_doc_lints.py

  Continuous Integration
  ======================

  - 77629851 CI: Add action to check for DCO signoffs in PRs
  - f944ebed CI: Add error msg when cargo-derivefmt check fails
  - d49344f9 CI: Move MSRV checks from manifest to lints in PR #553
    "ci-workflow-fixes"
  - ece6bfc2 CI: non-zero exit if cargo-derivefmt-* targets fail
  - 2257b91b CI: add actions/cache steps in PR #554 "CI: add
    actions/cache steps"
  - a1c9524f CI: fix check_dco.sh not working with other repos in PR
    #555 "CI: fix check_dco.sh not working with other repos"

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-12-06 07:56:00 +02:00
.gitea CI: fix check_dco.sh not working with other repos 2024-12-05 18:04:40 +02:00
benches melib: remove BackendOpGenerator 2019-07-18 20:14:14 +03:00
contrib contrib/README.md: elaborate a bit about mailto 2024-12-05 12:08:13 +02:00
debian Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
fuzz Make unicode-segmentation a hard dependency 2024-04-11 21:15:47 +03:00
meli Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
melib Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
scripts scripts: add markdown_doc_lints.py 2024-12-04 18:52:22 +02:00
tools Bump version to 0.8.8 2024-11-19 16:14:21 +02:00
.gdbinit small fixes 2019-11-21 15:44:18 +02:00
.git-blame-ignore-revs Add .git-blame-ignore-revs file 2023-12-09 21:30:02 +02:00
.gitignore chore: Add .idea (CLion) to .gitignore. 2023-05-17 09:22:12 +00:00
.mailmap Small repo cleanups 2024-11-16 11:19:35 +02:00
BUILD.md meli/README.md: Add cargo features section 2024-12-04 18:52:22 +02:00
Cargo.lock Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
Cargo.toml melib: update to 2021 edition 2023-09-13 18:47:00 +03:00
CHANGELOG.md Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
cliff.toml scripts: add generate_release_changelog_entry.sh 2024-11-19 13:19:04 +02:00
codemeta.json Bump version to 0.8.10 2024-12-06 07:56:00 +02:00
COPYING mailbox: add threads 2019-06-10 19:11:47 +03:00
Cross.toml Add Cross.toml for aarch64-unknown-linux-gnu builds 2023-09-05 15:33:28 +03:00
deny.toml Add cargo-deny configuration file deny.toml 2024-06-28 11:15:07 +03:00
DEVELOPMENT.md Update README.md, DEVELOPMENT.md and create BUILD.md 2024-01-20 12:09:34 +02:00
Makefile Cargo.tomls: make formatting more consistent 2024-08-03 16:03:42 +03:00
README.md meli/README.md: Add cargo features section 2024-12-04 18:52:22 +02:00
rustfmt.toml Clippy fixes 2023-04-30 20:47:53 +03:00

meli Established, created in 2017 Minimum Supported Rust Version GitHub license Crates.io IRC channel

BSD/Linux/macos terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP / NNTP (Usenet).

Try an old, outdated but online and interactive web demo powered by WebAssembly!

Table of contents:

Install

Packaging status table by repology.org

Build

Run make or cargo build --release --bin meli.

For detailed building instructions, see BUILD.md

Cargo Compile-time Features

meli supports opting in and out of features at compile time with cargo features.

The contents of the default feature are:

default = ["sqlite3", "notmuch", "smtp", "dbus-notifications", "gpgme", "cli-docs", "jmap", "static"]

A list of all the features and a description for each follows:

Feature flag Dependencies Notes
notmuch maildir feature Provides the notmuch backend
jmap http feature, url crate with serde feature Provides the JMAP backend
smtp tls feature Integrated async SMTP client
sqlite3 rusqlite crate with bundled-full feature Used in caches
sqlite3-static rusqlite crate with bundled-full feature Same as sqlite3 feature but provided for consistency and in case sqlite3 feature stops bundling libsqlite3 statically in the future.
smtp-trace smtp feature Connection trace logs on the trace logging level
gpgme GPG use by dynamically loading libgpgme.so
tls-static native-tls crate with vendored feature Links with OpenSSL statically where it's used
http-static isahc crate with static-curl feature Links with curl statically
dbus-notifications notify-rust dependency Uses DBus notifications
dbus-static notify-rust dependency and enableds its d_vendored feature Includes the dbus library statically.
cli-docs flate2 dependency Includes the manpage documentation compiled by either mandoc or man binary to plain text in meli's command line. Embedded documentation can be viewed with the subcommand meli man [PAGE]
libz-static libz-sys dependency and enables its static feature Allows for the transitive dependency libz (from curl) to be linked statically.
static enables tls-static, http-static, sqlite3-static, dbus-static, libz-static features

Quick start

# Create configuration file in ${XDG_CONFIG_HOME}/meli/config.toml:
$ meli create-config
# Edit configuration in ${EDITOR} or ${VISUAL}:
$ meli edit-config
# Optionally, install manual pages if installed via cargo:
$ meli install-man
# Ready to go.
$ meli
# You can read any manual page with the CLI subcommand `man`:
$ meli man meli.7
# See help output for all options and subcommands.
$ meli --help

See a comprehensive tour of meli in the manual page meli(7).

See also the Quickstart tutorial online.

After installing meli, see meli(1), meli.conf(5), meli(7) and meli-themes(5) for documentation. Sample configuration and theme files can be found in the meli/docs/samples/ subdirectory. Examples for configuration file settings can be found in meli.conf.examples(5) Manual pages are also hosted online. meli by default looks for a configuration file in this location: ${XDG_CONFIG_HOME}/meli/config.toml.

You can run meli with arbitrary configuration files by setting the ${MELI_CONFIG} environment variable to their locations, i.e.:

MELI_CONFIG=./test_config cargo run

See meli(7) for an extensive tutorial and meli.conf(5) for all configuration values.

Main view Compact main view Compose with embed terminal editor
Main view screenshot Compact main view screenshot Compose with embed terminal editor screenshot

Supported E-mail backends

Protocol Support
IMAP full
Maildir full
notmuch full1
mbox read-only
JMAP functional
NNTP / Usenet functional

E-mail submission backends

  • SMTP
  • Pipe to shell script
  • Server-side submission when supported

Non-exhaustive list of features

  • TLS
  • email threading support
  • multithreaded, async operation
  • optionally run your editor of choice inside meli, with an embedded xterm-compatible terminal emulator
  • plain text configuration in TOML
  • ability to open emails in UI tabs and switch to them
  • optional sqlite3 index search
  • override almost any setting per mailbox, per account
  • contact list (+read-only vCard and mutt alias file support)
  • forced UTF-8 (other encodings are read-only)
  • configurable shortcuts
  • theming
  • NO_COLOR support
  • ascii-only drawing characters option
  • view text/html attachments through an html filter command (w3m by default)
  • pipe attachments/mail to stuff
  • use external attachment file picker instead of typing in an attachment's full path
  • GPG signing, encryption, signing + encryption
  • GPG signature verification

HTML Rendering

HTML rendering is achieved using w3m by default. You can use the pager.html_filter setting to override this (for more details you can consult meli.conf(5)).

Documentation

See a comprehensive tour of meli in the manual page meli(7).

See also the Quickstart tutorial online.

After installing meli, see meli(1), meli.conf(5), meli(7) and meli-themes(5) for documentation. Sample configuration and theme files can be found in the meli/docs/samples/ subdirectory. Manual pages are also hosted online.

meli by default looks for a configuration file in this location: ${XDG_CONFIG_HOME}/meli/config.toml

You can run meli with arbitrary configuration files by setting the ${MELI_CONFIG} environment variable to their locations, or use the [-c, --config] argument:

MELI_CONFIG=./test_config meli

or

meli -c ./test_config

  1. there's no support for searching through all email directly, you'd have to create a mailbox with a notmuch query that returns everything and search inside that mailbox. ↩︎