Emacs is a very powerful editor, therefore there are many benefits from using it as an email client, such as direct integration with org-mode for todo and task management or the amazing editing capabilities of Emacs to write emails.
However, Emacs cannot do this natively, but there is great integration with a tool called mu
. This
tool is an indexer for your emails, and keeps track of them so that they are easily and quickly
searchable. The author of this tool also wrote an emacs-lisp file that queries mu
and provides a
user interface in emacs to better interact with it and use it to read emails.
mu
requires the emails to already be on the computer though, so the first step is to download them
using IMAP.
** Downloading Emails
IMAP is a protocol that can be used to download a copy of your emails from the server. A great tool
to use to download them using IMAP is mbsync
. In arch linux, this tool can be downloaded from the
official repository using
sudo pacman -S isync
This command line utility has to first be set up using a config file, which is usually located in
~/.mbsyncrc
, so that it knows where to download the emails from and how to authenticate properly.
The most important parts to set up in the config file are
IMAPAccount gmail
Host imap.gmail.com
User user@gmail.com
Pass password
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
to setup the account, and then the following to setup the directories where it should download emails to
IMAPStore gmail-remote
Account gmail
MaildirStore gmail-local
Subfolders Verbatim
Path ~/.mail/gmail/
Inbox ~/.mail/gmail/Inbox
Channel gmail
Master :gmail-remote:
Slave :gmail-local:
Patterns *
Create Both
SyncState *
It should then be mostly ready to download all the emails. If using two factor authentication, one can generate an app password which can be used instead of the user password.
Once mbsync
is configured, the emails can be downloaded using
mbsync -a
** Indexing the Emails
Once they are downloaded (in this case in the ~/.mail
directory), they have to be indexed so that
they can quickly be searched using Emacs. This is done by using the following shell command.
mu index --maildir=~/.mail
However, as mu
also has an emacs-lisp plugin, the following will also work after it has been
configured correctly in emacs.
emacsclient -e '(mu4e-update-index)'
*** Emacs Configuration
To use mu
in emacs as well, one first has to load the emacs lisp file using
(require 'mu4e)
After that, mu4e
can be configured with different things like the home directory, and shortcuts that
should be used in emacs. The full configuration can be seen in my Emacs configuration, which is
hosted on Github
** Sending Emails
Sending emails from Emacs requires a different protocol which is SMTP, however, that is already included in Emacs. The most basic setup can be seen below.
(smtpmail-smt-user . "email@gmail.com")
(smtpmail-local-domain . "gmail.com")
(smtpmail-default-smtp-server . "smtp.gmail.com")
(smtpmail-smtp-server . "smtp.gmail.com")
(smtpmail-smtp-service . 587)
** Conclusion
Emacs is now ready to be used as a full featured email client.