GNU-devel ELPA - minimail

minimail Atom Feed

Description
Simple, non-blocking IMAP email client
Latest
minimail-0.5.0.20260513.113502.tar (.sig), 2026-May-13, 170 KiB
Maintainer
Augusto Stoffel <arstoffel@gmail.com>
Website
https://codeberg.org/astoff/minimail
Browse ELPA's repository
CGit or Gitweb
All Dependencies
compat (.tar), transient (.tar)
Badge

To install this package from Emacs, use package-install or list-packages.

Full description

GNU ELPA

Minimail is a simple, non-blocking IMAP email client for Emacs. It is a rather new package but covers the basics needed for reading and sending messages:

  • Rendering of MIME content (via Gnus)
  • Composing, replying to and forwarding messages
  • Multi-account support
  • OAuth login (at least under GNOME, see below)
  • Message search
  • Copying and moving messages between mailboxes (also archive, move to trash, move to junk folder)
  • Sorting by thread, in two modes: shallow (just one nesting level, sorted by date, using server-side thread information if available) and hierarchical (full-blown message trees).

Here is a list of planned features:

  • Watching for new messages and notifications
  • Virtual mailboxes a.k.a. bookmarked searches
  • Various optimizations, perhaps a persistent cache

Minimail is an online IMAP client. It is intended to coexist peacefully with other clients accessing the same account. Moreover, it is intended to remain no more complicated than your regular webmail app. In line with that, the following are some features which are not planned:

  • Filtering (use server-side filtering instead)
  • Offline access
  • POP, NNTP, RSS, Maildir, instant messaging, microblogging, social media, virtual reality, etc.

1. Try it out

Minimail comes pre-configured to access the Emacs mailing lists served by Yhetil via anonymous IMAP. Just type M-x minimail-show-mailboxes RET to try it out.

2. Configuration

All account configuration is centralized in one variable, minimail-accounts. It accepts many different options, so it might be convenient to explore it using the Customize interface, even if you later decide to simply copy the Lisp expression into your init file.

In order to send emails, you should also set mail-user-agent to minimail and customize the variable message-server-alist from the Message package.

Here is an illustrative example:

(setq minimail-accounts
      '((gmail ;; This can be any symbol you like to identify the account
         :mail-address "somebody@gmail.com"
         :incoming-url "imaps://imap.gmail.com")
        (work ;; Assuming Evil Corp. uses "Google Workspace" as email provider
         :mail-address "webmaster@evilcorp.com"
         :incoming-url "imaps://imap.gmail.com"
         :signature (file "~/work/.signature"))
        (uni
         :mail-address "somebody@math.niceuni.edu"
         ;; Include a username in the IMAP server URL if it doesn't
         ;; match your email address.  Use `imap' as URL scheme if the
         ;; server only supports STARTTLS.
         :incoming-url "imap://username@imap.niceuni.edu"))
      mail-user-agent 'minimail
      message-server-alist
      '(("somebody@gmail.com" . "smtp smtp.gmail.com 465 somebody@gmail.com")
        ("webmaster@evilcorp.com" . "smtp smtp.gmail.com 465 webmaster@evilcorp.com")
        ("somebody@math.niceuni.edu" . "smtp smtp.niceuni.edu 587 username")))

Reassuringly, you also need a password to read your emails. Credentials are handled by the standard auth-source mechanism. This means that:

  • In the absence of any configuration, you would be queried for passwords when you start Minimail, and they remain cached for a couple of hours.
  • If any of the files pointed by the variable auth-sources exits, you will have the option to save the passwords.
  • You can customize auth-sources to use an alternative credentials source, such as your system's password manager.

Note that some email providers require you to first create an "app password". This option is sometimes listed under the misleading rubric of "enable less secure apps" (for Gmail, see this).

Once you get the basics up and running, try M-x customize-group minimail RET to explore all customization options.

2.1. OAuth access

If instead of passwords you want to (or must) use the OAuth login mechanism, and you happen to already have the account in question set up in GNOME Online Accounts, then you can try this out:

(push 'online-accounts auth-sources)

It is possible, though not very likely, that this feature can be extended to other platforms. Let me know if you have and hints or suggestions.

3. Usage

The main entry points of this package are:

  • minimail-show-mailboxes: Display the mailbox hierarchy of your accounts.
  • minimail-find-mailbox: Directly open a mailbox chosen from the minibuffer.
  • minimail-search: Search messages in a mailbox.

Hopefully, operation is intuitive enough that we don't need to linger on that topic. In a mailbox or message buffer, hit h to see a list of available commands.

4. Comparison with other packages

Minimail is, quite plainly, a reaction to Gnus, the self-described “coffee-brewing, all singing, all dancing, kitchen sink newsreader”. So let's break this down.

  • coffee-brewing: Gnus has filtering, scoring, expiration rules and a myriad of features that are probably useful if you need to handle a deluge of emails and news articles. Modern email services also offer some version of those features, so Minimail relies on that instead of brewing its own.
  • all-singing: Minimail is just an IMAP client, while Gnus has several backends in addition to IMAP, such as Usenet news (NNTP), website feeds (Atom and RSS) and local mail downloaded with an external tool.
  • all-dancing: Gnus blocks while performing network operations, so Minimail is the better dancer.
  • kitchen-sink: Gnus can wash your articles, whatever that means. Minimail is minimalist and, hopefully, easier to operate.
  • newsreader: Gnus is fundamentally a Usenet news client with email capabilities bolted on top. While it's very good at both, it can be confusing to refer to emails as articles, mailboxes as groups, and so on. Minimail uses the more familiar email terminology.

Rmail, Notmuch and mu4e take the entirely different offline approach: you first download all you messages and then work with them locally.

Old versions

minimail-0.4.2.0.20260512.143237.tar.lz2026-May-1234.4 KiB
minimail-0.4.2.0.20260511.125743.tar.lz2026-May-1134.4 KiB
minimail-0.4.2.0.20260503.131523.tar.lz2026-May-0430.4 KiB
minimail-0.4.2.0.20260428.192238.tar.lz2026-Apr-2827.8 KiB
minimail-0.4.0.20260427.90919.tar.lz2026-Apr-2727.8 KiB
minimail-0.4.0.20260415.81600.tar.lz2026-Apr-1527.7 KiB
minimail-0.3.0.20260404.123801.tar.lz2026-Apr-1026.5 KiB
minimail-0.3.0.20251125.163059.tar.lz2025-Nov-2524.9 KiB
minimail-0.2.0.20251101.84006.tar.lz2025-Nov-0123.3 KiB
minimail-0.1.1.0.20251013.74521.tar.lz2025-Oct-1320.8 KiB

News

1. Version 0.5

  • New commands: minimail-{next,previous}-message-unseen.
  • New commands: minimail-message-archived-at, minimail-message-list-archive, minimail-message-list-unsubscribe.
  • New commands: minimail-toggle-message-{seen,flagged,flags}.
  • New command: minimail-copy-to-mailbox.
  • Add support for OAuth login.
  • Add menus, including context menu for mailbox buffer.
  • Nicer thread tree drawing with customizable icons.

2. Version 0.4

  • Transient menu for search.
  • Support for operating on multiple messages using active region (this might eventually be changed to a dired-style marking mechanism).

3. Version 0.3

  • Add hierarchical threading mode.
  • Use define-icon for message flag indicators, making them customizable.

4. Version 0.2

  • New command: minimail-show-mailboxes.
  • New command: minimail-load-more-messages.

5. Version 0.1

  • First release