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.