2013-06-16 23:54:19 +02:00
|
|
|
|
@documentencoding UTF-8
|
2011-12-14 08:11:40 +01:00
|
|
|
|
\input texinfo.tex @c -*-texinfo-*-
|
2013-06-03 20:09:20 +02:00
|
|
|
|
@include texi.texi
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@c %**start of header
|
|
|
|
|
@setfilename mu4e.info
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@settitle Mu4e @value{mu-version} user manual
|
2012-09-30 19:12:07 +02:00
|
|
|
|
|
|
|
|
|
@c Use proper quote and backtick for code sections in PDF output
|
|
|
|
|
@c Cf. Texinfo manual 14.2
|
|
|
|
|
@set txicodequoteundirected
|
|
|
|
|
@set txicodequotebacktick
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@c %**end of header
|
2012-10-20 11:51:19 +02:00
|
|
|
|
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@copying
|
2016-01-09 19:02:49 +01:00
|
|
|
|
Copyright @copyright{} 2012-2016 Dirk-Jan C. Binnema
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
|
|
|
|
@quotation
|
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
2012-01-01 21:48:11 +01:00
|
|
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
2011-12-14 08:11:40 +01:00
|
|
|
|
any later version published by the Free Software Foundation; with no
|
2012-01-01 21:48:11 +01:00
|
|
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
|
|
|
|
copy of the license is included in the section entitled ``GNU Free
|
|
|
|
|
Documentation License.''
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@end quotation
|
|
|
|
|
@end copying
|
|
|
|
|
|
2012-09-28 16:12:09 +02:00
|
|
|
|
@titlepage
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@title @t{Mu4e} - an e-mail client for GNU/Emacs
|
2012-12-24 10:45:14 +01:00
|
|
|
|
@subtitle version @value{mu-version}
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@author Dirk-Jan C. Binnema
|
2012-09-28 16:12:09 +02:00
|
|
|
|
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@c The following two commands start the copyright page.
|
|
|
|
|
@page
|
|
|
|
|
@vskip 0pt plus 1filll
|
|
|
|
|
@insertcopying
|
|
|
|
|
@end titlepage
|
2012-09-28 16:12:09 +02:00
|
|
|
|
|
|
|
|
|
@dircategory Emacs
|
|
|
|
|
@direntry
|
2016-01-03 12:29:19 +01:00
|
|
|
|
* mu4e: (Mu4e). An email client for GNU/Emacs.
|
2012-09-28 16:12:09 +02:00
|
|
|
|
@end direntry
|
|
|
|
|
|
|
|
|
|
@contents
|
|
|
|
|
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@ifnottex
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@node Top
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@top mu4e manual
|
|
|
|
|
@end ifnottex
|
|
|
|
|
|
|
|
|
|
@iftex
|
|
|
|
|
@node Welcome to mu4e
|
|
|
|
|
@unnumbered Welcome to mu4e
|
|
|
|
|
@end iftex
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2013-04-17 20:04:42 +02:00
|
|
|
|
Welcome to @t{mu4e} @value{mu-version}!
|
2011-12-29 00:26:43 +01:00
|
|
|
|
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@t{mu4e} (@t{mu}-for-emacs) is an e-mail client for GNU-Emacs version 24
|
|
|
|
|
or higher, built on top of the
|
2015-12-25 08:41:35 +01:00
|
|
|
|
@t{mu}@footnote{@url{http://www.djcbsoftware.nl/code/mu}} e-mail search
|
|
|
|
|
engine. @t{mu4e} is optimized for fast handling of large amounts of
|
|
|
|
|
e-mail.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2016-01-03 12:29:19 +01:00
|
|
|
|
Some of its highlights:
|
2012-06-26 21:47:25 +02:00
|
|
|
|
@itemize
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@item Fully search-based: there are no folders@footnote{that is, instead of
|
2013-07-06 09:47:15 +02:00
|
|
|
|
folders, you use queries that match messages in a particular folder}, only
|
2013-10-12 15:04:12 +02:00
|
|
|
|
queries.
|
2012-06-26 21:47:25 +02:00
|
|
|
|
@item Fully documented, with example configurations
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@item User-interface optimized for speed, with quick key strokes for common actions
|
2015-12-25 08:41:35 +01:00
|
|
|
|
@item Support for non-English languages (so ``angstrom'' matches ``Ångström'')
|
|
|
|
|
@item Asynchronous: heavy actions don't block @t{emacs}@footnote{currently,
|
|
|
|
|
the only exception to this is @emph{sending mail}; there are solutions
|
|
|
|
|
for that though - see the @ref{FAQ}}
|
|
|
|
|
@item Support for cryptography - signing, encrypting and decrypting
|
2013-03-17 18:43:12 +01:00
|
|
|
|
@item Address auto-completion based on the contacts in your messages
|
|
|
|
|
@item Extendable with your own snippets of elisp
|
2012-06-26 21:47:25 +02:00
|
|
|
|
@end itemize
|
|
|
|
|
|
2015-12-25 08:41:35 +01:00
|
|
|
|
In this manual, we go through the installation of @t{mu4e}, do some
|
|
|
|
|
basic configuration and explain its daily use. We also show you how you
|
2016-01-03 12:29:19 +01:00
|
|
|
|
can customize @t{mu4e} for your special needs.
|
2012-04-28 08:12:54 +02:00
|
|
|
|
|
2016-01-03 12:29:19 +01:00
|
|
|
|
At the end of the manual, there are some example configurations, to get
|
|
|
|
|
you up to speed quickly: @ref{Example configurations}. There's also an
|
|
|
|
|
@ref{FAQ}, which should help you with questions to some common
|
|
|
|
|
questions.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@menu
|
2015-12-25 08:41:35 +01:00
|
|
|
|
* Introduction:: Where be begin
|
2012-06-20 10:29:57 +02:00
|
|
|
|
* Getting started:: Setting things up
|
2015-12-25 08:41:35 +01:00
|
|
|
|
* Main view:: The @t{mu4e} overview
|
2012-09-27 16:21:45 +02:00
|
|
|
|
* Headers view:: Lists of message headers
|
|
|
|
|
* Message view:: Viewing specific messages
|
|
|
|
|
* Editor view:: Creating / editing messages
|
2012-06-26 21:47:25 +02:00
|
|
|
|
* Searching:: Some more background on searching/queries
|
|
|
|
|
* Marking:: Marking messages and performing actions
|
2015-12-13 16:44:47 +01:00
|
|
|
|
* Contexts:: Defining contexts and switching between them
|
2015-12-25 08:41:35 +01:00
|
|
|
|
* Dynamic folders:: Folders that change based on circumstances
|
2012-06-12 09:21:44 +02:00
|
|
|
|
* Actions:: Defining and using custom actions
|
2012-10-11 16:50:32 +02:00
|
|
|
|
* Extending mu4e:: Writing code for @t{mu4e}
|
2012-01-01 21:48:11 +01:00
|
|
|
|
|
|
|
|
|
Appendices
|
2012-10-03 20:54:34 +02:00
|
|
|
|
* Interaction with other tools:: mu4e and the rest of the world
|
|
|
|
|
* Example configurations:: Some examples to set you up quickly
|
2012-10-14 16:00:25 +02:00
|
|
|
|
* FAQ:: Common questions and answers
|
2013-02-11 22:38:14 +01:00
|
|
|
|
* Tips and Tricks:: Useful tips
|
2012-05-02 16:28:43 +02:00
|
|
|
|
* How it works:: Some notes about the implementation of @t{mu4e}
|
2012-04-16 17:31:48 +02:00
|
|
|
|
* Logging and debugging:: How to debug problems in @t{mu4e}
|
2012-05-02 16:28:43 +02:00
|
|
|
|
* GNU Free Documentation License:: The license of this manual
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
|
|
@node Introduction
|
|
|
|
|
@chapter Introduction
|
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@menu
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Why another e-mail client::Aren't there enough already
|
|
|
|
|
* Other mail clients::Where mu4e takes its inspiration
|
|
|
|
|
* What mu4e does not do::Focus on the core-business, delegate the rest
|
|
|
|
|
* Becoming a mu4e user::Joining the club
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end menu
|
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Why another e-mail client
|
2011-12-22 23:39:32 +01:00
|
|
|
|
@section Why another e-mail client?
|
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
I (the author) spend a @emph{lot} of time dealing with e-mail, both
|
|
|
|
|
professionally and privately. Having an efficient e-mail client is
|
2015-12-25 08:41:35 +01:00
|
|
|
|
essential. Since none of the existing ones worked the way I wanted, I
|
2016-01-03 12:29:19 +01:00
|
|
|
|
created my own.
|
2015-12-25 08:41:35 +01:00
|
|
|
|
|
|
|
|
|
@command{emacs} is an integral part of my workflow, so it made a lot of
|
|
|
|
|
sense to use it for e-mail as well. And as I had already written an
|
|
|
|
|
e-mail search engine (@t{mu}), it seemed only logical to use that as a
|
|
|
|
|
basis.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2012-01-19 20:40:26 +01:00
|
|
|
|
@node Other mail clients
|
|
|
|
|
@section Other mail clients
|
|
|
|
|
|
2012-06-12 09:21:44 +02:00
|
|
|
|
Under the hood, @t{mu4e} is fully search-based, similar to programs like
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@t{notmuch}@footnote{@url{http://notmuchmail.org}} and
|
|
|
|
|
@t{sup}@footnote{@url{http://sup.rubyforge.org/}}.
|
2015-12-25 08:41:35 +01:00
|
|
|
|
|
|
|
|
|
However, @t{mu4e}'s user-interface is quite different. @t{mu4e}'s mail
|
|
|
|
|
handling (deleting, moving etc.) is inspired by
|
|
|
|
|
@emph{Wanderlust}@footnote{@url{http://www.gohome.org/wl/}} (another
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@code{emacs}-based e-mail client),
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@t{mutt}@footnote{@url{http://www.mutt.org/}} and the @t{dired}
|
|
|
|
|
file-manager for emacs.
|
2011-12-23 15:48:29 +01:00
|
|
|
|
|
2012-04-24 21:37:50 +02:00
|
|
|
|
@t{mu4e} tries to keep all the 'state' in your maildirs, so you can easily
|
2012-06-26 21:47:25 +02:00
|
|
|
|
switch between clients, synchronize over @abbr{IMAP}, backup with @t{rsync}
|
|
|
|
|
and so on. If you delete the database, you won't lose any information.
|
2012-04-28 08:12:54 +02:00
|
|
|
|
|
2012-06-26 21:47:25 +02:00
|
|
|
|
@node What mu4e does not do
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@section What @t{mu4e} does not do
|
2011-12-22 23:39:32 +01:00
|
|
|
|
|
2016-01-03 12:29:19 +01:00
|
|
|
|
There are a number of things that @t{mu4e} does @b{not} do:
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@itemize
|
2013-05-25 18:26:54 +02:00
|
|
|
|
@item @t{mu}/@t{mu4e} do @emph{not} get your e-mail messages from
|
2012-04-30 16:48:07 +02:00
|
|
|
|
a mail server. That task is delegated to other tools, such as
|
|
|
|
|
@t{offlineimap}@footnote{@url{http://offlineimap.org/}},
|
2014-11-30 10:27:41 +01:00
|
|
|
|
@t{isync/mbsync}@footnote{@url{http://isync.sourceforge.net/}} or
|
2012-01-19 20:40:26 +01:00
|
|
|
|
@t{fetchmail}@footnote{@url{http://www.fetchmail.info/}}. As long as the
|
2014-11-30 10:27:41 +01:00
|
|
|
|
messages end up in a maildir, @t{mu4e} and @t{mu} are happy to deal with
|
|
|
|
|
them.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@item @t{mu4e} also does @emph{not} implement sending of messages; instead, it
|
2016-01-03 12:29:19 +01:00
|
|
|
|
depends on @t{smtpmail} (@inforef{Top,,smtpmail}), which is part of
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@command{emacs}. In addition, @t{mu4e} piggybacks on Gnus' message editor;
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@inforef{Top,,message}.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@end itemize
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2012-05-02 16:28:43 +02:00
|
|
|
|
Thus, many of the things an e-mail client traditionally needs to do, are
|
2012-04-30 16:48:07 +02:00
|
|
|
|
delegated to other tools. This leaves @t{mu4e} to concentrate on what it does
|
2012-05-02 16:28:43 +02:00
|
|
|
|
best: quickly finding the mails you are looking for, and handle them as
|
2012-04-24 21:37:50 +02:00
|
|
|
|
efficiently as possible.
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@node Becoming a mu4e user
|
|
|
|
|
@section Becoming a @t{mu4e} user
|
|
|
|
|
|
2015-12-25 08:41:35 +01:00
|
|
|
|
If @t{mu4e} looks like something for you, give it a shot! We're trying
|
|
|
|
|
hard to make it as easy as possible to set up and use; and while you can
|
|
|
|
|
use elisp in various places to augment @t{mu4e}, a lot of knowledge
|
|
|
|
|
about programming or elisp shouldn't be required. The idea is to provide
|
|
|
|
|
sensible defaults, and allow for customization.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
|
|
|
|
|
When you take @t{mu4e} into use, it's a good idea to subscribe to the
|
|
|
|
|
@t{mu}/@t{mu4e}-mailing
|
2013-03-17 18:43:12 +01:00
|
|
|
|
list@footnote{@url{http://groups.google.com/group/mu-discuss}}.
|
|
|
|
|
|
2016-02-13 17:29:40 +01:00
|
|
|
|
Sometimes, you might encounter some unexpected behavior while using
|
|
|
|
|
@t{mu4e}. It could be a bug in @t{mu4e}, it could be an issue in other
|
|
|
|
|
software. Or it could just be a misunderstanding. In any case, if you
|
|
|
|
|
want to report this (either to the mailing list or to
|
|
|
|
|
@url{https://github.com/djcb/mu/issues}, the latter is preferred),
|
|
|
|
|
please always include the following information:
|
|
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
|
@item what did you expect that should happen? what actually happened?
|
|
|
|
|
@item can you provide some exact steps to reproduce?
|
|
|
|
|
@item what version of mu4e and emacs were you using? What operating system?
|
|
|
|
|
@item can you reproduce it with emacs -q and only loading mu4e?
|
|
|
|
|
@item if the problem is related to some specific message, please include the raw message file (appropriately anonimized, of course)
|
|
|
|
|
@end itemize
|
2013-05-25 18:26:54 +02:00
|
|
|
|
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@node Getting started
|
|
|
|
|
@chapter Getting started
|
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
In this chapter, we go through the installation of @t{mu4e} and its
|
|
|
|
|
basic setup. After we have succeeded in @ref{Getting mail}, and
|
2016-01-03 12:29:19 +01:00
|
|
|
|
@pxref{Indexing your messages}, we discuss the @ref{Basic
|
|
|
|
|
configuration}.
|
2012-03-26 20:19:11 +02:00
|
|
|
|
|
2012-10-01 15:42:37 +02:00
|
|
|
|
After these steps, @t{mu4e} should be ready to go!
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@menu
|
2012-10-14 16:00:25 +02:00
|
|
|
|
* Requirements:: What is needed
|
2012-09-27 16:21:45 +02:00
|
|
|
|
* Installation:: How to install @t{mu} and @t{mu4e}
|
|
|
|
|
* Getting mail:: Getting mail from a server
|
|
|
|
|
* Indexing your messages:: Creating and maintaining the index
|
|
|
|
|
* Basic configuration:: Settings for @t{mu4e}
|
|
|
|
|
* Folders:: Setting up standard folders
|
2012-10-01 15:42:37 +02:00
|
|
|
|
* Retrieval and indexing:: Doing it from mu4e
|
2012-09-27 16:21:45 +02:00
|
|
|
|
* Sending mail:: How to send mail
|
2012-09-28 16:12:09 +02:00
|
|
|
|
* Running mu4e:: Overview of the @t{mu4e} views
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end menu
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@node Requirements
|
|
|
|
|
@section Requirements
|
|
|
|
|
|
2015-12-27 13:30:02 +01:00
|
|
|
|
@t{mu}/@t{mu4e} are known to work on a wide variety of Unix- and
|
|
|
|
|
Unix-like systems, including many Linux distributions, OS X and
|
2013-05-25 18:26:54 +02:00
|
|
|
|
FreeBSD. @command{emacs} 23 or 24 (recommended) is required, as well as
|
2012-10-14 16:00:25 +02:00
|
|
|
|
Xapian@footnote{@url{http://xapian.org/}} and
|
2013-03-17 18:43:12 +01:00
|
|
|
|
GMime@footnote{@url{http://spruce.sourceforge.net/gmime/}}.
|
|
|
|
|
|
2013-05-25 18:26:54 +02:00
|
|
|
|
@t{mu} has optional support for the Guile 2.x (Scheme) programming
|
2014-11-30 10:27:41 +01:00
|
|
|
|
language. There are also some GUI-tools, which require GTK+ 3.x and
|
|
|
|
|
Webkit.
|
2013-03-17 18:43:12 +01:00
|
|
|
|
|
2013-05-25 18:26:54 +02:00
|
|
|
|
If you intend to compile @t{mu} yourself, you need to have the typical
|
|
|
|
|
development tools, such as C and C++ compilers (both @command{gcc} and
|
|
|
|
|
@command{clang} should work), GNU Autotools and @command{make}, and the
|
|
|
|
|
development packages for GMime, GLib and Xapian. Optionally (if you use them),
|
|
|
|
|
you also need the development packages for GTK+, Webkit and Guile.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Installation
|
|
|
|
|
@section Installation
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@t{mu4e} is part of @t{mu} - by installing the latter, the former is installed
|
2012-10-01 15:42:37 +02:00
|
|
|
|
as well. Some Linux distributions provide packaged versions of
|
|
|
|
|
@t{mu}/@t{mu4e}; if you can use those, there is no need to compile anything
|
2012-10-14 16:00:25 +02:00
|
|
|
|
yourself. However, if there are no packages for your distribution, if they are
|
|
|
|
|
outdated, or if you want to use the latest development versions, you can
|
|
|
|
|
follow the steps below.
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
First, you need make sure you have the necessary dependencies; the details
|
|
|
|
|
depend on your distribution. If you're using another distribution (or another
|
|
|
|
|
OS), the below at least be helpful in identifying the packages to install.
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
We provide some instructions for Debian, Ubuntu and Fedora; if those do not
|
|
|
|
|
apply to you, you can follow either @ref{Building from a release tarball} or
|
2012-10-17 17:35:23 +02:00
|
|
|
|
@ref{Building from git}.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@subsection Dependencies for Debian/Ubuntu
|
2012-01-19 20:40:26 +01:00
|
|
|
|
|
|
|
|
|
@example
|
2012-10-01 20:18:59 +02:00
|
|
|
|
$ sudo apt-get install libgmime-2.6-dev libxapian-dev
|
2012-10-01 15:42:37 +02:00
|
|
|
|
# if libgmime-2.6-dev is not available, try libgmime-2.4-dev
|
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
# get emacs 23 or 24 if you don't have it yet
|
2013-05-25 18:26:54 +02:00
|
|
|
|
$ sudo apt-get install emacs24
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
2012-01-19 20:40:26 +01:00
|
|
|
|
# optional
|
2012-10-01 20:18:59 +02:00
|
|
|
|
$ sudo apt-get install guile-2.0-dev html2text xdg-utils
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
|
|
|
|
# optional: only needed for msg2pdf and mug (toy gtk+ frontend)
|
2012-10-01 20:18:59 +02:00
|
|
|
|
$ sudo apt-get install libwebkit-dev
|
2012-01-19 20:40:26 +01:00
|
|
|
|
@end example
|
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@subsection Dependencies for Fedora
|
|
|
|
|
|
|
|
|
|
@example
|
|
|
|
|
$ sudo yum install gmime-devel xapian-core-devel
|
|
|
|
|
|
|
|
|
|
# get emacs 23 or 24 if you don't have it yet
|
|
|
|
|
$ sudo yum install emacs
|
|
|
|
|
|
|
|
|
|
# optional
|
|
|
|
|
$ sudo yum install html2text xdg-utils
|
|
|
|
|
|
|
|
|
|
# optional: only needed for msg2pdf and mug (toy gtk+ frontend)
|
2013-12-17 23:40:30 +01:00
|
|
|
|
$ sudo yum install webkitgtk3-devel
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@end example
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@subsection Building from a release tarball
|
|
|
|
|
@anchor{Building from a release tarball}
|
2012-10-11 16:50:32 +02:00
|
|
|
|
|
2012-09-29 13:24:58 +02:00
|
|
|
|
Using a release-tarball (as available from
|
2012-06-06 23:17:18 +02:00
|
|
|
|
GoogleCode@footnote{@url{http://code.google.com/p/mu0/downloads/list}},
|
2013-05-25 18:26:54 +02:00
|
|
|
|
installation follows the typical steps:
|
2012-04-30 16:48:07 +02:00
|
|
|
|
|
2011-12-14 08:11:40 +01:00
|
|
|
|
@example
|
2011-12-17 10:33:50 +01:00
|
|
|
|
$ tar xvfz mu-<version>.tar.gz # use the specific version
|
2011-12-19 08:07:03 +01:00
|
|
|
|
$ cd mu-<version>
|
2012-10-14 20:42:51 +02:00
|
|
|
|
# On the BSDs: use gmake instead of make
|
|
|
|
|
$ ./configure && make
|
2012-06-06 23:17:18 +02:00
|
|
|
|
$ sudo make install
|
|
|
|
|
@end example
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
Xapian, GMime and their dependencies must be installed.
|
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@subsection Building from git
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@anchor{Building from git}
|
2012-10-11 16:50:32 +02:00
|
|
|
|
|
2012-10-01 15:42:37 +02:00
|
|
|
|
Alternatively, if you build from the git repository or use a tarball like the
|
2012-10-01 20:18:59 +02:00
|
|
|
|
ones that @t{github} produces, the instructions are slightly different, and
|
2013-11-19 06:44:18 +01:00
|
|
|
|
require you to have @t{autotools} (Autoconf, Automake, Libtool, and friends)
|
|
|
|
|
installed:
|
2012-06-06 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
@example
|
2012-10-01 20:18:59 +02:00
|
|
|
|
# get from git (alternatively, use a github tarball)
|
2012-10-03 11:53:24 +02:00
|
|
|
|
$ git clone git://github.com/djcb/mu.git
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
2012-10-01 20:18:59 +02:00
|
|
|
|
$ cd mu
|
2012-06-06 23:17:18 +02:00
|
|
|
|
$ autoreconf -i && ./configure && make
|
2012-10-14 20:42:51 +02:00
|
|
|
|
# On the BSDs: use gmake instead of make
|
2011-12-14 08:11:40 +01:00
|
|
|
|
$ sudo make install
|
|
|
|
|
@end example
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
(Xapian, GMime and their dependencies must be installed).
|
|
|
|
|
|
2012-01-19 20:40:26 +01:00
|
|
|
|
After this, @t{mu} and @t{mu4e} should be installed @footnote{there's a hard
|
|
|
|
|
dependency between versions of @t{mu4e} and @t{mu} - you cannot combine
|
2012-10-17 17:35:23 +02:00
|
|
|
|
different versions} on your system, and be available from the command line
|
2012-10-14 16:00:25 +02:00
|
|
|
|
in @command{emacs}.
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
You may need to restart @command{emacs}, so it can find @t{mu4e} in its
|
2012-10-14 20:42:51 +02:00
|
|
|
|
@code{load-path}. If, even after restarting, @command{emacs} cannot find
|
2013-08-24 10:17:00 +02:00
|
|
|
|
@t{mu4e}, you may need to add it to your @code{load-path} explicitly; check
|
|
|
|
|
where @t{mu4e} is installed, and add something like the following to your
|
2012-10-14 20:42:51 +02:00
|
|
|
|
configuration before trying again:
|
|
|
|
|
@lisp
|
|
|
|
|
;; the exact path may differ -- check it
|
|
|
|
|
(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e")
|
|
|
|
|
@end lisp
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-04-02 19:00:42 +02:00
|
|
|
|
@subsection mu4e and emacs customization
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
There is some support for using the @command{emacs} customization system in
|
2012-10-01 20:18:59 +02:00
|
|
|
|
@t{mu4e}, but for now, we recommend setting the values manually. Please refer
|
2012-10-03 20:54:34 +02:00
|
|
|
|
to @ref{Example configurations} for a couple of examples of this; here we go
|
2012-10-01 20:18:59 +02:00
|
|
|
|
through things step-by-step.
|
2012-04-28 08:12:54 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Getting mail
|
|
|
|
|
@section Getting mail
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-06-12 09:21:44 +02:00
|
|
|
|
In order for @t{mu} (and, by extension, @t{mu4e}) to work, you need to have
|
2012-10-01 20:18:59 +02:00
|
|
|
|
your e-mail messages stored in a
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@emph{maildir}@footnote{@url{http://en.wikipedia.org/wiki/Maildir}; in this
|
|
|
|
|
manual we use the term 'maildir' for both the standard and the hierarchy of
|
|
|
|
|
maildirs that store your messages} - a specific directory structure with
|
|
|
|
|
one-file-per-message. If you are already using a maildir, you are lucky. If
|
|
|
|
|
not, some setup is required:
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@itemize
|
2012-10-16 20:43:49 +02:00
|
|
|
|
@item @emph{Using an external IMAP or POP server} - if you are using an
|
|
|
|
|
@abbr{IMAP} or @abbr{POP} server, you can use tools like @t{getmail},
|
|
|
|
|
@t{fetchmail}, @t{offlineimap} or @t{isync} to download your messages into a
|
|
|
|
|
maildir (@file{~/Maildir}, often). Because it is such a common case, there is
|
|
|
|
|
a full example of setting @t{mu4e} up with @t{offlineimap} and Gmail;
|
|
|
|
|
@pxref{Gmail configuration}.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
@item @emph{Using a local mail server} - if you are using a local mail-server
|
2012-10-16 20:43:49 +02:00
|
|
|
|
(such as @t{postfix} or @t{qmail}), you can teach them to deliver into a
|
|
|
|
|
maildir as well, maybe in combination with @t{procmail}. A bit of googling
|
|
|
|
|
should be able to provide you with the details.
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@end itemize
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Indexing your messages
|
|
|
|
|
@section Indexing your messages
|
|
|
|
|
|
2012-01-19 20:40:26 +01:00
|
|
|
|
After you have succeeded in @ref{Getting mail}, we need to @emph{index} the
|
2013-08-24 10:17:00 +02:00
|
|
|
|
messages. That is - we need to scan the messages in the maildir and store the
|
|
|
|
|
information about them in a special database. We can do that from @t{mu4e} --
|
|
|
|
|
@ref{Main view}, but the first time, it is a good idea to run it from the
|
|
|
|
|
command line, which makes it easier to verify that everything works correctly.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2013-08-24 10:17:00 +02:00
|
|
|
|
Assuming that your maildir is at @file{~/Maildir}, we issue the following
|
2012-10-01 20:18:59 +02:00
|
|
|
|
command:
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@example
|
2016-01-12 20:38:07 +01:00
|
|
|
|
$ mu index --maildir=~/Maildir
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@end example
|
|
|
|
|
|
2012-02-05 09:56:37 +01:00
|
|
|
|
This should scan your @file{~/Maildir}@footnote{In most cases, you do not even
|
2012-10-01 20:18:59 +02:00
|
|
|
|
need to provide the @t{--maildir=~/Maildir} since it is the default; see the
|
|
|
|
|
@t{mu-index} man-page for details} and fill the database, and give progress
|
|
|
|
|
information while doing so.
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
The indexing process may take a few minutes the first time you do it
|
|
|
|
|
(for thousands of e-mails); afterwards it is much faster, since @t{mu}
|
|
|
|
|
only scans messages that are new or have changed. Indexing is discussed
|
|
|
|
|
in full detail in the @t{mu-index} man-page.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-04-24 21:37:50 +02:00
|
|
|
|
After the indexing process has finished, you can quickly test if everything
|
2012-10-11 16:50:32 +02:00
|
|
|
|
worked, by trying some command-line searches, for example
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@example
|
2016-01-12 20:38:07 +01:00
|
|
|
|
$ mu find hello
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@end example
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2013-08-24 10:17:00 +02:00
|
|
|
|
which lists all messages that match @t{hello}. For more examples of searches,
|
|
|
|
|
see @ref{Queries}, or check the @t{mu-find} and @t{mu-easy} man pages. If all
|
|
|
|
|
of this worked well, we are well on our way setting things up; the next step
|
|
|
|
|
is to do some basic configuration for @t{mu4e}.
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
|
|
|
|
@node Basic configuration
|
|
|
|
|
@section Basic configuration
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
Before we can start using @t{mu4e}, we need to tell @command{emacs} to load
|
|
|
|
|
it. So, add to your @file{~/.emacs} (or its moral equivalent, such as
|
2012-09-27 16:21:45 +02:00
|
|
|
|
@file{~/.emacs.d/init.el}) something like:
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2012-10-01 20:18:59 +02:00
|
|
|
|
@lisp
|
2012-04-24 21:37:50 +02:00
|
|
|
|
(require 'mu4e)
|
2012-10-01 20:18:59 +02:00
|
|
|
|
@end lisp
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
If @command{emacs} complains that it cannot find @t{mu4e}, check your
|
2012-10-17 10:15:07 +02:00
|
|
|
|
@code{load-path} and make sure that @t{mu4e}'s installation directory is part
|
|
|
|
|
of it. If not, you can add it:
|
|
|
|
|
|
|
|
|
|
@lisp
|
|
|
|
|
(add-to-list 'load-path MU4E-PATH)
|
|
|
|
|
@end lisp
|
|
|
|
|
|
|
|
|
|
with @t{MU4E-PATH} replaced with the actual path.
|
|
|
|
|
|
2012-04-24 21:37:50 +02:00
|
|
|
|
@node Folders
|
|
|
|
|
@section Folders
|
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
The next step is to tell @t{mu4e} where it can find your Maildir, and
|
2015-12-29 17:47:12 +01:00
|
|
|
|
some special folders.
|
|
|
|
|
|
|
|
|
|
So, for example@footnote{Note that the folders (@t{mu4e-sent-folder},
|
|
|
|
|
@t{mu4e-drafts-folder}, @t{mu4e-trash-folder} and
|
2014-11-30 10:27:41 +01:00
|
|
|
|
@t{mu4e-refile-folder}) can also be @emph{functions} that are evaluated
|
|
|
|
|
at runtime. This allows for dynamically changing them depending on the
|
2015-12-29 17:47:12 +01:00
|
|
|
|
situation. See @ref{Dynamic folders} for details.}:
|
2012-04-24 21:37:50 +02:00
|
|
|
|
@lisp
|
2016-01-10 10:56:58 +01:00
|
|
|
|
;; these are actually the defaults
|
|
|
|
|
(setq
|
2016-01-12 20:38:07 +01:00
|
|
|
|
mu4e-maildir "~/Maildir" ;; top-level Maildir
|
|
|
|
|
mu4e-sent-folder "/sent" ;; folder for sent messages
|
|
|
|
|
mu4e-drafts-folder "/drafts" ;; unfinished messages
|
|
|
|
|
mu4e-trash-folder "/trash" ;; trashed messages
|
|
|
|
|
mu4e-refile-folder "/archive") ;; saved messages
|
2012-04-24 21:37:50 +02:00
|
|
|
|
@end lisp
|
|
|
|
|
|
2014-09-23 06:52:15 +02:00
|
|
|
|
Note, @code{mu4e-maildir} takes an actual filesystem-path, the other
|
|
|
|
|
folder names are all relative to @code{mu4e-maildir}. Also note that
|
|
|
|
|
this must @emph{not} be a symbolic link.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2015-12-29 17:47:12 +01:00
|
|
|
|
If you use @t{mu4e-context}, see @ref{Contexts and special folders} for
|
|
|
|
|
what that means for these special folders.
|
|
|
|
|
|
2012-10-01 15:42:37 +02:00
|
|
|
|
@node Retrieval and indexing
|
2014-11-30 10:27:41 +01:00
|
|
|
|
@section Retrieval and indexing with mu4e
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
|
|
|
|
As we have seen, we can do all of the mail retrieval @emph{outside} of
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@command{emacs}/@t{mu4e}. However, you can also do it from within
|
2015-12-21 21:15:47 +01:00
|
|
|
|
@t{mu4e}.
|
2014-11-30 10:27:41 +01:00
|
|
|
|
|
|
|
|
|
@subsection Basics
|
2015-12-21 21:15:47 +01:00
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
To set up mail-retrieval from withing @t{mu4e}, set the variable
|
|
|
|
|
@code{mu4e-get-mail-command} to the program or shell command you want to
|
|
|
|
|
use for retrieving mail. You can then get your e-mail using @kbd{M-x
|
|
|
|
|
mu4e-update-mail-and-index}, or @kbd{C-S-u} in all @t{mu4e}-views;
|
|
|
|
|
alternatively, you can use @kbd{C-c C-u}, which may be more convenient
|
|
|
|
|
if you use emacs in a terminal.
|
2012-10-25 10:59:50 +02:00
|
|
|
|
|
2013-10-12 15:04:12 +02:00
|
|
|
|
You can interrupt the (foreground) update process with @kbd{q}.
|
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
It is possible to update your mail and index periodically in the
|
|
|
|
|
background, by setting the variable @code{mu4e-update-interval} to the
|
|
|
|
|
number of seconds between these updates. If set to @code{nil}, it won't
|
|
|
|
|
update at all. After you make changes to @code{mu4e-update-interval},
|
|
|
|
|
@t{mu4e} must be restarted before the changes take effect.
|
|
|
|
|
|
|
|
|
|
@subsection Handling errors during mail retrieval
|
|
|
|
|
|
|
|
|
|
If the mail-retrieval process returns with a non-zero exit code,
|
2015-12-25 08:41:35 +01:00
|
|
|
|
@t{mu4e} shows a warning (unless @code{mu4e-index-update-error-warning}
|
|
|
|
|
is set to @code{nil}), but then try to index your maildirs anyway
|
|
|
|
|
(unless @code{mu4e-index-update-error-continue} is set to @code{nil}).
|
2014-11-30 10:27:41 +01:00
|
|
|
|
|
|
|
|
|
Reason for these defaults is that some of the mail-retrieval programs
|
|
|
|
|
may return non-zero, even when the updating process succeeded; however,
|
|
|
|
|
it is hard to tell such pseudo-errors from real ones like 'login
|
|
|
|
|
failed'.
|
|
|
|
|
|
|
|
|
|
If you need more refinement, it may be useful to wrap the mail-retrieval
|
|
|
|
|
program in a shell-script, for example @t{fetchmail} returns 1 to
|
|
|
|
|
indicate 'no mail'; we can handle that with:
|
|
|
|
|
@lisp
|
2016-01-10 10:56:58 +01:00
|
|
|
|
(setq mu4e-get-mail-command "fetchmail -v || [ $? -eq 1 ]")
|
2014-11-30 10:27:41 +01:00
|
|
|
|
@end lisp
|
|
|
|
|
A similar approach can be used with other mail retrieval programs,
|
|
|
|
|
although not all of them have their exit codes documented.
|
|
|
|
|
|
2015-12-21 21:15:47 +01:00
|
|
|
|
@subsection Implicit mail retrieval
|
2014-11-30 10:27:41 +01:00
|
|
|
|
|
|
|
|
|
If you don't have a specific command for getting mail, for example
|
|
|
|
|
because you are running your own mail-server, you can leave
|
|
|
|
|
@code{mu4e-get-mail-command} at @t{"true"} (the default), in which case
|
|
|
|
|
@t{mu4e} won't try to get new mail, but still re-index your messages.
|
|
|
|
|
|
|
|
|
|
@subsection Example setup
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
2012-10-01 20:18:59 +02:00
|
|
|
|
A simple setup could look something like:
|
2012-10-01 15:42:37 +02:00
|
|
|
|
|
|
|
|
|
@lisp
|
2012-10-03 11:53:24 +02:00
|
|
|
|
(setq
|
2016-01-12 20:38:07 +01:00
|
|
|
|
mu4e-get-mail-command "offlineimap" ;; or fetchmail, or ...
|
|
|
|
|
mu4e-update-interval 300) ;; update every 5 minutes
|
2012-10-01 15:42:37 +02:00
|
|
|
|
@end lisp
|
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
A hook @code{mu4e-update-pre-hook} is available which is run right
|
|
|
|
|
before starting the process. That can be useful, for example, to
|
|
|
|
|
influence, @code{mu4e-get-mail-command} based on the the current
|
|
|
|
|
situation (location, time of day, ...).
|
2013-10-13 20:44:47 +02:00
|
|
|
|
|
2014-11-30 10:27:41 +01:00
|
|
|
|
It is possible to get notifications when the indexing process does any
|
|
|
|
|
updates - for example when receiving new mail. See
|
|
|
|
|
@code{mu4e-index-updated-hook} and some tips on its usage in the
|
|
|
|
|
@ref{FAQ}.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2011-12-20 07:45:07 +01:00
|
|
|
|
@node Sending mail
|
|
|
|
|
@section Sending mail
|
|
|
|
|
|
2012-10-11 19:04:18 +02:00
|
|
|
|
@t{mu4e} re-uses Gnu's @code{message-mode} (@inforef{Top,,message}) for
|
|
|
|
|
writing mail and inherits the setup for sending mail as well.
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2012-10-01 20:18:59 +02:00
|
|
|
|
For sending mail using @abbr{SMTP}, @t{mu4e} uses @t{smtpmail}
|
2015-11-22 11:17:36 +01:00
|
|
|
|
(@inforef{Top,,smtpmail}). This package supports many different ways to
|
|
|
|
|
send mail; please refer to its documentation for the details.
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2012-10-11 19:04:18 +02:00
|
|
|
|
Here, we only provide some simple examples - for more, see @ref{Example
|
2012-10-03 20:54:34 +02:00
|
|
|
|
configurations}.
|
2011-12-20 07:45:07 +01:00
|
|
|
|
|
2012-10-11 19:04:18 +02:00
|
|
|
|
A very minimal setup:
|
2011-12-20 07:45:07 +01:00
|
|
|
|
|
2012-03-26 20:19:11 +02:00
|
|
|
|
@lisp
|
2011-12-20 07:45:07 +01:00
|
|
|
|
;; tell message-mode how to send mail
|
|
|
|
|
(setq message-send-mail-function 'smtpmail-send-it)
|
|
|
|
|
;; if our mail server lives at smtp.example.org; if you have a local
|
2012-01-19 20:40:26 +01:00
|
|
|
|
;; mail-server, simply use 'localhost' here.
|
2011-12-20 07:45:07 +01:00
|
|
|
|
(setq smtpmail-smtp-server "smtp.example.org")
|
2012-03-26 20:19:11 +02:00
|
|
|
|
@end lisp
|
2011-12-20 07:45:07 +01:00
|
|
|
|
|
2012-09-30 19:12:07 +02:00
|
|
|
|
Since @t{mu4e} (re)uses the same @t{message mode} and @t{smtpmail} that Gnus
|
|
|
|
|
uses, many settings for those also apply to @t{mu4e}.
|
2011-12-20 07:45:07 +01:00
|
|
|
|
|
2012-10-01 20:18:59 +02:00
|
|
|
|
@subsection Dealing with sent messages
|
|
|
|
|
|
2012-10-11 19:04:18 +02:00
|
|
|
|
By default, @t{mu4e} puts a copy of messages you sent in the folder determined
|
2012-10-14 16:00:25 +02:00
|
|
|
|
by @code{mu4e-sent-folder}. In some cases, this may not be what you want -
|
2012-10-11 19:04:18 +02:00
|
|
|
|
for example, when using Gmail-over-@abbr{IMAP}, this interferes with Gmail's
|
2012-10-11 16:50:32 +02:00
|
|
|
|
handling of the sent messages folder, and you may end up with duplicate
|
|
|
|
|
messages.
|
|
|
|
|
|
2013-07-06 09:47:15 +02:00
|
|
|
|
You can use the variable @code{mu4e-sent-messages-behavior} to customize what
|
|
|
|
|
happens with sent messages. The default is the symbol @code{sent} which, as
|
|
|
|
|
mentioned, causes the message to be copied to your sent-messages folder. Other
|
|
|
|
|
possible values are the symbols @code{trash} (the sent message is moved to the
|
|
|
|
|
trash-folder (@code{mu4e-trash-folder}), and @code{delete} to simply discard
|
2015-03-21 17:28:20 +01:00
|
|
|
|
the sent message altogether (so Gmail can deal with it).
|
* make it configurable what to do with sent messages (part 2), and document it:
By default, @t{mu4e} puts a copy of any messages you sent in the folder you
set for @code{mu4e-sent-folder}. In some case, this may not be what you want -
for example, when using GMail+@abbr{IMAP} (but @emph{not} with
GMail+@abbr{POP3}), this interferes with GMail's handling of the sent messages
folder, and you may end up with duplicate messages. For this, since @t{mu4e}
0.9.8.3, there is the variable @code{mu4e-sent-messages-behavior}, which takes
a symbol. The default is @code{'sent} which, as stated causes the message to
be copied to your sent-messages folder. Other possible values are
@code{'trash} (so the sent message is copied to the trash-folder
(@code{mu4e-trash-folder}), and @code{'delete} to simply discard the message
altogether.
2012-03-13 19:13:30 +01:00
|
|
|
|
|
2012-10-11 19:04:18 +02:00
|
|
|
|
For Gmail-over-@abbr{IMAP}, you could add the following to your settings:
|
* make it configurable what to do with sent messages (part 2), and document it:
By default, @t{mu4e} puts a copy of any messages you sent in the folder you
set for @code{mu4e-sent-folder}. In some case, this may not be what you want -
for example, when using GMail+@abbr{IMAP} (but @emph{not} with
GMail+@abbr{POP3}), this interferes with GMail's handling of the sent messages
folder, and you may end up with duplicate messages. For this, since @t{mu4e}
0.9.8.3, there is the variable @code{mu4e-sent-messages-behavior}, which takes
a symbol. The default is @code{'sent} which, as stated causes the message to
be copied to your sent-messages folder. Other possible values are
@code{'trash} (so the sent message is copied to the trash-folder
(@code{mu4e-trash-folder}), and @code{'delete} to simply discard the message
altogether.
2012-03-13 19:13:30 +01:00
|
|
|
|
@verbatim
|
2012-09-30 19:12:07 +02:00
|
|
|
|
;; don't save messages to Sent Messages, Gmail/IMAP takes care of this
|
2012-10-11 16:50:32 +02:00
|
|
|
|
(setq mu4e-sent-messages-behavior 'delete)
|
* make it configurable what to do with sent messages (part 2), and document it:
By default, @t{mu4e} puts a copy of any messages you sent in the folder you
set for @code{mu4e-sent-folder}. In some case, this may not be what you want -
for example, when using GMail+@abbr{IMAP} (but @emph{not} with
GMail+@abbr{POP3}), this interferes with GMail's handling of the sent messages
folder, and you may end up with duplicate messages. For this, since @t{mu4e}
0.9.8.3, there is the variable @code{mu4e-sent-messages-behavior}, which takes
a symbol. The default is @code{'sent} which, as stated causes the message to
be copied to your sent-messages folder. Other possible values are
@code{'trash} (so the sent message is copied to the trash-folder
(@code{mu4e-trash-folder}), and @code{'delete} to simply discard the message
altogether.
2012-03-13 19:13:30 +01:00
|
|
|
|
@end verbatim
|
2012-10-01 20:18:59 +02:00
|
|
|
|
And that's it! We should now be ready to go.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2015-03-21 17:28:20 +01:00
|
|
|
|
For more complex needs, @code{mu4e-sent-messages-behavior} can also be
|
|
|
|
|
a a parameter-less function that returns one of the mentioned symbols;
|
|
|
|
|
see the built-in documentation for the variable.
|
2013-04-21 11:49:26 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Running mu4e
|
2012-09-27 16:21:45 +02:00
|
|
|
|
@section Running mu4e
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2015-03-21 17:28:20 +01:00
|
|
|
|
After following the steps in this chapter, we now (hopefully!) have a
|
|
|
|
|
working @t{mu4e} setup. Great! In the next chapters, we walk you
|
|
|
|
|
through the various views in @t{mu4e}.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-09-27 16:21:45 +02:00
|
|
|
|
For your orientation, the diagram below shows how the views relate to each
|
2012-10-11 16:50:32 +02:00
|
|
|
|
other, and the default key-bindings to navigate between them.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@cartouche
|
|
|
|
|
@verbatim
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
[C] +--------+ [RFCE]
|
|
|
|
|
--------> | editor | <--------
|
|
|
|
|
/ +--------+ \
|
|
|
|
|
/ [RFCE]^ \
|
2016-01-10 10:56:58 +01:00
|
|
|
|
/ | \
|
2016-01-12 20:38:07 +01:00
|
|
|
|
+-------+ [sjbB]+---------+ [RET] +---------+
|
|
|
|
|
| main | <---> | headers | <----> | message |
|
|
|
|
|
+-------+ [q] +---------+ [qbBjs] +---------+
|
|
|
|
|
[sjbB] ^
|
2016-01-10 10:56:58 +01:00
|
|
|
|
[.] | [q]
|
2016-01-12 20:38:07 +01:00
|
|
|
|
V
|
|
|
|
|
+-----+
|
|
|
|
|
| raw |
|
|
|
|
|
+-----+
|
2016-01-10 10:56:58 +01:00
|
|
|
|
|
|
|
|
|
Default bindings
|
|
|
|
|
----------------
|
|
|
|
|
R: Reply s: search .: raw view (toggle)
|
|
|
|
|
F: Forward j: jump-to-maildir q: quit
|
|
|
|
|
C: Compose b: bookmark-search
|
|
|
|
|
E: Edit B: edit bookmark-search
|
2012-10-11 16:50:32 +02:00
|
|
|
|
|
|
|
|
|
@end verbatim
|
|
|
|
|
@end cartouche
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Main view
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@chapter The main view
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2012-01-19 20:40:26 +01:00
|
|
|
|
After you have installed @t{mu4e} (@pxref{Getting started}), you can start it
|
2012-10-14 16:00:25 +02:00
|
|
|
|
with @kbd{M-x mu4e}. @t{mu4e} does some checks to ensure everything is set up
|
|
|
|
|
correctly, and then shows you the @t{mu4e} main view. Its major mode is
|
|
|
|
|
@code{mu4e-main-mode}.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@menu
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Overview:MV Overview. What is the main view
|
|
|
|
|
* Basic actions::What can we do
|
|
|
|
|
* Bookmarks:MV Bookmarks. Jumping to other places
|
|
|
|
|
* Miscellaneous::Notes
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
|
|
@node MV Overview
|
|
|
|
|
@section Overview
|
|
|
|
|
|
|
|
|
|
The main view looks something like the following:
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@cartouche
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@verbatim
|
2016-01-12 20:38:07 +01:00
|
|
|
|
* mu4e - mu for emacs version 0.X.X CG
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
Basics
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
* [j]ump to some maildir
|
|
|
|
|
* enter a [s]earch query
|
|
|
|
|
* [C]ompose a new message
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
Bookmarks
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
* [bu] Unread messages
|
|
|
|
|
* [bt] Today's messages
|
|
|
|
|
* [bw] Last 7 days
|
|
|
|
|
* [bp] Messages with images
|
|
|
|
|
* [bs] Sent mail
|
|
|
|
|
* [bf] Flagged messages
|
|
|
|
|
* [b]] Flow
|
|
|
|
|
* [b/] Test
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
Misc
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2016-01-12 20:38:07 +01:00
|
|
|
|
* [;]Switch focus
|
|
|
|
|
* [U]pdate email & database
|
|
|
|
|
|
|
|
|
|
* [N]ews
|
|
|
|
|
* [A]bout mu4e
|
|
|
|
|
* [H]elp
|
|
|
|
|
* [q]uit
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
|
|
|
|
@end verbatim
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@end cartouche
|
2011-12-14 08:11:40 +01:00
|
|
|
|
|
2012-10-17 22:36:35 +02:00
|
|
|
|
In the example above, you can see the letters ``@t{CG}'', which indicate:
|
|
|
|
|
@itemize
|
|
|
|
|
@item @t{C}: support for decryption of encrypted messages, and verifying
|
|
|
|
|
signatures. See @ref{MSGV Crypto} in the @ref{Message view} for details.
|
|
|
|
|
@item @t{G}: support for the Guile 2.0 programming language
|
|
|
|
|
@end itemize
|
|
|
|
|
Whether you see both, one or none of these letters depends on the way @t{mu}
|
|
|
|
|
is built.
|
2012-09-29 12:30:49 +02:00
|
|
|
|
|
2012-10-17 22:36:35 +02:00
|
|
|
|
Let's walk through the menu.
|
2012-10-22 19:27:49 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Basic actions
|
|
|
|
|
@section Basic actions
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2011-12-17 10:33:50 +01:00
|
|
|
|
First, the @emph{Basics}:
|
|
|
|
|
@itemize
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@item @t{[j]ump to some maildir}: after pressing @key{j} (``jump''),
|
|
|
|
|
@t{mu4e} asks you for a maildir to visit. These are the maildirs you set in
|
|
|
|
|
@ref{Basic configuration} and any of your own. If you choose @key{o}
|
|
|
|
|
(``other'') or @key{/}, you can choose from all maildirs under
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@code{mu4e-maildir}. After choosing a maildir, the messages in that maildir
|
2012-10-11 16:50:32 +02:00
|
|
|
|
are listed, in the @ref{Headers view}.
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@item @t{enter a [s]earch query}: after pressing @key{s}, @t{mu4e} asks
|
|
|
|
|
you for a search query, and after entering one, shows the results in the
|
|
|
|
|
@ref{Headers view}.
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@item @t{[C]ompose a new message}: after pressing @key{C}, you are dropped in
|
|
|
|
|
the @ref{Editor view} to write a new message.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end itemize
|
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node MV Bookmarks
|
|
|
|
|
@section Bookmarks
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
The next item in the Main view is @emph{Bookmarks}. Bookmarks are predefined
|
|
|
|
|
queries with a descriptive name and a shortcut - in the example above, we see
|
2012-10-14 16:00:25 +02:00
|
|
|
|
the default bookmarks. You can view the list of messages matching a certain
|
|
|
|
|
bookmark by pressing @key{b} followed by the bookmark's shortcut. If you'd
|
|
|
|
|
like to edit the bookmarked query first before invoking it, use @key{B}.
|
2012-10-11 16:50:32 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
Bookmarks are stored in the variable @code{mu4e-bookmarks}; you can add your
|
2012-10-11 16:50:32 +02:00
|
|
|
|
own and/or replace the default ones; @xref{Bookmarks}.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Miscellaneous
|
|
|
|
|
@section Miscellaneous
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2012-06-12 09:21:44 +02:00
|
|
|
|
Finally, there are some @emph{Misc} (miscellaneous) actions:
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@itemize
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@item @t{[U]pdate email & database} executes the shell-command in the variable
|
2016-01-10 10:56:58 +01:00
|
|
|
|
@code{mu4e-get-mail-command}, and afterwards updates the @t{mu} database;
|
2012-10-25 10:59:50 +02:00
|
|
|
|
see @ref{Indexing your messages} and @ref{Getting mail} for details.
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@item @t{toggle [m]ail sending mode (direct)} toggles between sending
|
2011-12-19 08:07:03 +01:00
|
|
|
|
mail directly, and queuing it first (for example, when you are offline), and
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@t{[f]lush queued mail} flushes any queued mail. This item is visible only
|
2012-10-14 16:00:25 +02:00
|
|
|
|
if you have actually set up mail-queuing. @ref{Queuing mail}
|
|
|
|
|
@item @t{[A]bout mu4e} provides general information about the program
|
|
|
|
|
@item @t{[H]elp} shows help information for this view
|
|
|
|
|
@item Finally, @t{[q]uit mu4e} quits your @t{mu4e}-session
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@node Headers view
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@chapter The headers view
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2015-03-21 17:28:20 +01:00
|
|
|
|
The headers view shows the results of a query. The header-line shows
|
|
|
|
|
the names of the fields. Below that, there is a line with those
|
|
|
|
|
fields, for each matching message, followed by a footer line. The
|
|
|
|
|
major-mode for the headers view is @code{mu4e-headers-mode}.
|
2012-09-29 12:30:49 +02:00
|
|
|
|
|
|
|
|
|
@menu
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Overview: HV Overview. What is the Header View
|
|
|
|
|
* Keybindings::Do things with your keyboard
|
2016-02-16 07:15:40 +01:00
|
|
|
|
* Marking: HV Marking. Selecting messages for doing things
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Sort order and threading::Influencing the display
|
2016-02-16 07:15:40 +01:00
|
|
|
|
* Custom headers: HV Custom headers. Adding your own headers
|
|
|
|
|
* Actions: HV Actions. Defining and using actions
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Split view::Seeing both headers and messages
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
|
|
@node HV Overview
|
|
|
|
|
@section Overview
|
2012-01-19 20:40:26 +01:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
An example headers view:
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@cartouche
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@verbatim
|
2013-03-19 21:51:17 +01:00
|
|
|
|
Date V Flgs From/To List Subject
|
2013-04-21 11:49:26 +02:00
|
|
|
|
06:32 Nu To Edmund Dantès GstDev + Re: Gstreamer-V4L...
|
|
|
|
|
15:08 Nu Abbé Busoni GstDev + Re: Gstreamer-V...
|
|
|
|
|
18:20 Nu Pierre Morrel GstDev \ Re: Gstreamer...
|
|
|
|
|
2013-03-18 S Jacopo EmacsUsr + emacs server on win...
|
|
|
|
|
2013-03-18 S Mercédès EmacsUsr \ RE: emacs server ...
|
|
|
|
|
2013-03-18 S Beachamp EmacsUsr + Re: Copying a whole...
|
|
|
|
|
22:07 Nu Albert de Moncerf EmacsUsr \ Re: Copying a who...
|
|
|
|
|
2013-03-18 S Gaspard Caderousse GstDev | Issue with GESSimpl...
|
|
|
|
|
2013-03-18 Ss Baron Danglars GuileUsr | Guile-SDL 0.4.2 ava...
|
2011-12-19 08:07:03 +01:00
|
|
|
|
End of search results
|
|
|
|
|
@end verbatim
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@end cartouche
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-04-06 10:00:39 +02:00
|
|
|
|
Some notes to explain what you see in the example:
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@itemize
|
|
|
|
|
@item The fields shown in the headers view can be influenced by customizing
|
2012-10-14 16:00:25 +02:00
|
|
|
|
the variable @code{mu4e-headers-fields}; see @code{mu4e-header-info} for the
|
2013-10-05 19:09:26 +02:00
|
|
|
|
list of built-in fields. Apart from the built-in fields, you can also create
|
2013-10-12 15:04:12 +02:00
|
|
|
|
custom fields using @code{mu4e-header-info-custom}; see @ref{HV Custom
|
|
|
|
|
headers} for details.
|
2012-10-19 11:02:13 +02:00
|
|
|
|
@item By default, the date is shown with the @t{:human-date} field, which
|
|
|
|
|
shows the @emph{time} for today's messages, and the @emph{date} for older
|
|
|
|
|
messages. If you want to distinguish between 'today' and 'older', you can use
|
|
|
|
|
the @t{:date} field instead.
|
|
|
|
|
@item You can customize the date and time formats with the variable
|
2012-10-22 19:27:49 +02:00
|
|
|
|
@code{mu4e-headers-date-format} and @code{mu4e-headers-time-format},
|
2013-03-19 21:51:17 +01:00
|
|
|
|
respectively. In the example, we use @code{:human-date}, which shows when the
|
|
|
|
|
time when the message was sent today, and the date otherwise.
|
2015-03-22 10:49:57 +01:00
|
|
|
|
@item By default, the subject is shown using the @t{:subject} field;
|
|
|
|
|
however, it is also possible to use @t{:thread-subject}, which shows
|
|
|
|
|
the subject of a thread only once, similar to the display of the
|
|
|
|
|
@t{mutt} e-mail client.
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@item The header field used for sorting is indicated by ``@t{V}'' or
|
2015-03-22 10:49:57 +01:00
|
|
|
|
``@t{^}''@footnote{or you can use little graphical triangles; see
|
|
|
|
|
variable @code{mu4e-use-fancy-chars}}, corresponding to the sort order
|
|
|
|
|
(descending or ascending, respectively). You can influence this by a
|
|
|
|
|
mouse click, or @key{O}. Not all fields allow sorting.
|
2012-05-02 21:14:54 +02:00
|
|
|
|
@item Instead of showing the @t{From:} and @t{To:} fields separately, you
|
2012-10-14 16:00:25 +02:00
|
|
|
|
can use From/To (@t{:from-or-to} in @code{mu4e-headers-fields} as a more
|
2012-05-02 21:14:54 +02:00
|
|
|
|
compact way to convey the most important information: it shows @t{From:}
|
|
|
|
|
@emph{except} when the e-mail was sent by the user (i.e., you) - in that case
|
2012-05-13 14:02:40 +02:00
|
|
|
|
it shows @t{To:} (prefixed by @t{To}@footnote{You can customize this by
|
2012-10-14 16:00:25 +02:00
|
|
|
|
changing the variable @code{mu4e-headers-from-or-to-prefix} (a cons cell)}, as
|
2012-05-13 14:02:40 +02:00
|
|
|
|
in the example above). To determine whether a message was sent by you,
|
2012-10-19 15:01:55 +02:00
|
|
|
|
@t{mu4e} uses the variable @code{mu4e-user-mail-address-list}, a list of
|
|
|
|
|
your e-mail addresses.
|
2013-03-19 21:51:17 +01:00
|
|
|
|
@item The 'List' field shows the mailing-list a message is sent to;
|
|
|
|
|
@code{mu4e} tries to create a convenient shortcut for the mailing-list name;
|
2015-11-15 11:35:23 +01:00
|
|
|
|
the variable @code{mu4e-user-mailing-lists} can be used to add your
|
|
|
|
|
your own shortcuts. You can use @code{mu4e-mailing-list-patterns} to
|
|
|
|
|
to specify generic shortcuts, e.g. to shorten list names which contain
|
|
|
|
|
dots (mu4e defaults to shortening up to the first dot):
|
|
|
|
|
@lisp
|
2015-11-16 14:42:24 +01:00
|
|
|
|
(setq mu4e-mailing-list-patterns '(``\\([-_a-z0-9.]+\\)\.lists\.company\.com'')))
|
2015-11-15 11:35:23 +01:00
|
|
|
|
@end lisp
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@item The letters in the 'Flags' field correspond to the following: D=@emph{draft},
|
2012-10-16 20:43:49 +02:00
|
|
|
|
F=@emph{flagged} (i.e., 'starred'), N=@emph{new}, P=@emph{passed} (i.e.,
|
|
|
|
|
forwarded), R=@emph{replied}, S=@emph{seen}, T=@emph{trashed},
|
|
|
|
|
a=@emph{has-attachment}, x=@emph{encrypted}, s=@emph{signed},
|
|
|
|
|
u=@emph{unread}. The tooltip for this field also contains this information.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@item The subject field also indicates the discussion threads @footnote{using
|
|
|
|
|
Jamie Zawinski's mail threading algorithm,
|
|
|
|
|
@url{http://www.jwz.org/doc/threading.html}}.
|
2012-10-24 17:36:50 +02:00
|
|
|
|
@item The headers view is @emph{automatically updated} if any changes are
|
2013-06-12 09:09:19 +02:00
|
|
|
|
found during the indexing process, and if there is no current
|
2012-10-24 17:36:50 +02:00
|
|
|
|
user-interaction. If you do not want such automatic updates, set
|
|
|
|
|
@code{mu4e-headers-auto-update} to @code{nil}.
|
2013-10-13 20:44:47 +02:00
|
|
|
|
@item There is a hook-function @code{mu4e-headers-found-hook} available which
|
|
|
|
|
is invoked just after @t{mu4e} has completed showing the messages in the
|
|
|
|
|
headers-view.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
@end itemize
|
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Keybindings
|
|
|
|
|
@section Keybindings
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
Using the below key bindings, you can do various things with these messages;
|
|
|
|
|
these actions are also listed in the @t{Headers} menu in the @command{emacs}
|
|
|
|
|
menu bar.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2011-12-19 21:11:47 +01:00
|
|
|
|
@verbatim
|
|
|
|
|
key description
|
2012-06-14 10:13:00 +02:00
|
|
|
|
===========================================================
|
2014-11-28 07:54:08 +01:00
|
|
|
|
n,p view the next, previous message
|
|
|
|
|
],[ move to the next, previous unread message
|
2012-04-09 10:52:49 +02:00
|
|
|
|
y select the message view (if it's visible)
|
2012-06-14 10:13:00 +02:00
|
|
|
|
RET open the message at point in the message view
|
2012-05-06 15:58:00 +02:00
|
|
|
|
|
2012-06-14 10:13:00 +02:00
|
|
|
|
searching
|
|
|
|
|
---------
|
2012-05-06 15:58:00 +02:00
|
|
|
|
s search
|
2012-06-07 15:30:33 +02:00
|
|
|
|
S edit last query
|
2012-05-06 15:58:00 +02:00
|
|
|
|
/ narrow the search
|
|
|
|
|
b search bookmark
|
2012-05-10 08:56:02 +02:00
|
|
|
|
B edit bookmark before search
|
2012-04-01 23:59:55 +02:00
|
|
|
|
j jump to maildir
|
2014-12-09 06:27:48 +01:00
|
|
|
|
M-left,\ previous query
|
2012-05-10 08:56:02 +02:00
|
|
|
|
M-right next query
|
2012-05-06 15:58:00 +02:00
|
|
|
|
|
2012-06-10 10:19:51 +02:00
|
|
|
|
O change sort order
|
|
|
|
|
P toggle threading
|
2012-06-11 23:34:56 +02:00
|
|
|
|
Q toggle full-search
|
2012-12-27 15:27:53 +01:00
|
|
|
|
V toggle skip-duplicates
|
|
|
|
|
W toggle include-related
|
2012-04-01 23:59:55 +02:00
|
|
|
|
|
2012-06-14 10:13:00 +02:00
|
|
|
|
marking
|
|
|
|
|
-------
|
2012-04-01 23:59:55 +02:00
|
|
|
|
d mark for moving to the trash folder
|
2014-08-08 13:18:29 +02:00
|
|
|
|
= mark for removing trash flag ('untrash')
|
2012-09-27 16:21:45 +02:00
|
|
|
|
DEL,D mark for complete deletion
|
2012-04-01 23:59:55 +02:00
|
|
|
|
m mark for moving to another maildir folder
|
2012-09-27 16:21:45 +02:00
|
|
|
|
r mark for refiling
|
2012-05-13 14:02:40 +02:00
|
|
|
|
+,- mark for flagging/unflagging
|
2012-09-28 16:12:09 +02:00
|
|
|
|
?,! mark message as unread, read
|
2012-06-14 10:13:00 +02:00
|
|
|
|
|
2012-04-01 23:59:55 +02:00
|
|
|
|
u unmark message at point
|
2012-06-20 19:42:39 +02:00
|
|
|
|
U unmark *all* messages
|
2012-06-14 10:13:00 +02:00
|
|
|
|
|
2012-04-24 21:37:50 +02:00
|
|
|
|
% mark based on a regular expression
|
2012-04-28 08:12:54 +02:00
|
|
|
|
T,t mark whole thread, subthread
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2014-08-21 04:11:39 +02:00
|
|
|
|
<insert>,* mark for 'something' (decide later)
|
2012-10-06 19:47:59 +02:00
|
|
|
|
# resolve deferred 'something' marks
|
2012-06-14 18:10:02 +02:00
|
|
|
|
|
2012-06-14 10:13:00 +02:00
|
|
|
|
x execute actions for the marked messages
|
|
|
|
|
|
|
|
|
|
composition
|
|
|
|
|
-----------
|
2012-04-01 23:59:55 +02:00
|
|
|
|
R,F,C reply/forward/compose
|
|
|
|
|
E edit (only allowed for draft messages)
|
|
|
|
|
|
2012-04-18 18:10:48 +02:00
|
|
|
|
|
2012-06-14 10:13:00 +02:00
|
|
|
|
misc
|
|
|
|
|
----
|
2015-12-13 16:44:47 +01:00
|
|
|
|
; switch focus
|
2012-06-14 10:13:00 +02:00
|
|
|
|
a execute some custom action on a header
|
|
|
|
|
| pipe message through shell command
|
2012-05-14 09:45:39 +02:00
|
|
|
|
C-+,C-- increase / decrease the number of headers shown
|
2011-12-19 21:11:47 +01:00
|
|
|
|
H get help
|
2012-10-25 10:59:50 +02:00
|
|
|
|
C-S-u update mail & reindex
|
2016-02-06 11:48:14 +01:00
|
|
|
|
q leave the headers buffer
|
2011-12-19 21:11:47 +01:00
|
|
|
|
@end verbatim
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
|
2016-01-10 10:56:58 +01:00
|
|
|
|
@node HV Marking
|
|
|
|
|
@section Marking
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2013-08-24 10:17:00 +02:00
|
|
|
|
You can @emph{mark} messages for a certain action, such as deletion or
|
|
|
|
|
move. After one or more messages are marked, you can then execute
|
|
|
|
|
(@code{mu4e-mark-execute-all}, @key{x}) these actions. This two-step
|
|
|
|
|
mark-execute sequence is similar to what e.g. @t{dired} does. It is how
|
|
|
|
|
@t{mu4e} tries to be as quick as possible, while avoiding accidents.
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
The mark/unmark commands support the @emph{region} (i.e., ``selection'') --
|
|
|
|
|
so, for example, if you select some messages and press @key{DEL}, all messages
|
|
|
|
|
in the region are marked for deletion.
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-05-13 14:02:40 +02:00
|
|
|
|
You can mark all messages that match a certain pattern with @key{%}. In
|
|
|
|
|
addition, you can mark all messages in the current thread (@key{T}) or
|
|
|
|
|
sub-thread (@key{t}).
|
2012-04-28 08:12:54 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
When you do a new search or refresh the headers buffer while you still have
|
|
|
|
|
marked messages, you are asked what to do with those marks -- whether to
|
|
|
|
|
@emph{apply} them before leaving, or @emph{ignore} them. This behavior can be
|
|
|
|
|
influenced with the variable @code{mu4e-headers-leave-behavior}.
|
2012-04-28 08:12:54 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
For more information about marking, see @ref{Marking}.
|
2012-05-13 14:02:40 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Sort order and threading
|
|
|
|
|
@section Sort order and threading
|
2012-06-10 10:19:51 +02:00
|
|
|
|
|
|
|
|
|
By default, @t{mu4e} sorts messages by date, in descending order: the most
|
2012-06-12 09:21:44 +02:00
|
|
|
|
recent messages are shown at the top. In addition, the messages are
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@emph{threaded}, i.e., shown in the context of a discussion thread; this also
|
2012-06-12 09:21:44 +02:00
|
|
|
|
affects the sort order.
|
2012-06-10 10:19:51 +02:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
The header field used for sorting is indicated by ``@t{V}'' or
|
|
|
|
|
``@t{^}''@footnote{or you can use little graphical triangles; see variable
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@code{mu4e-use-fancy-chars}}, indicating the sort order (descending or
|
2012-10-17 17:35:23 +02:00
|
|
|
|
ascending, respectively).
|
2012-10-11 16:50:32 +02:00
|
|
|
|
|
|
|
|
|
You can change the sort order by clicking the corresponding field with the
|
2012-10-14 16:00:25 +02:00
|
|
|
|
mouse, or with @kbd{M-x mu4e-headers-change-sorting} (@key{O}); note that not
|
2012-10-11 16:50:32 +02:00
|
|
|
|
all fields can be used for sorting. You can toggle threading on/off using
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@kbd{M-x mu4e-headers-toggle-threading} or @key{P}. For both of these functions,
|
2012-10-11 16:50:32 +02:00
|
|
|
|
unless you provide a prefix argument (@key{C-u}), the current search is
|
|
|
|
|
updated immediately using the new parameters. You can toggle full-search
|
2012-10-14 16:00:25 +02:00
|
|
|
|
(@ref{Searching}) using @kbd{M-x mu4e-headers-toggle-full-search} or @key{Q}.
|
2012-06-10 10:19:51 +02:00
|
|
|
|
|
|
|
|
|
If you want to change the defaults for these settings, you can use the
|
2012-10-14 16:00:25 +02:00
|
|
|
|
variables @code{mu4e-headers-sortfield} and @code{mu4e-headers-show-threads}.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
|
2013-10-12 15:04:12 +02:00
|
|
|
|
@node HV Custom headers
|
|
|
|
|
@section Custom headers
|
|
|
|
|
|
|
|
|
|
Sometimes the normal headers that @t{mu4e} offers (Date, From, To, Subject
|
|
|
|
|
etc.) may not be enough. For these cases, @t{mu4e} offers @emph{custom
|
|
|
|
|
headers} in both the headers-view and the message-view.
|
|
|
|
|
|
|
|
|
|
You can do so by adding a description of your custom header to
|
|
|
|
|
@code{mu4e-header-info-custom}, which is a list of custom headers.
|
|
|
|
|
|
|
|
|
|
Let's look at an example -- suppose we want to add a custom header that shows
|
|
|
|
|
the number of recipients for a message, i.e., the sum of the number of
|
|
|
|
|
recipients in the To: and Cc: fields. Let's further suppose that our function
|
|
|
|
|
takes a message-plist as its argument (@ref{Message functions}).
|
|
|
|
|
|
|
|
|
|
@lisp
|
|
|
|
|
(add-to-list 'mu4e-header-info-custom
|
2016-01-12 20:38:07 +01:00
|
|
|
|
'(:recipnum .
|
|
|
|
|
( :name "Number of recipients" ;; long name, as seen in the message-view
|
|
|
|
|
:shortname "Recip#" ;; short name, as seen in the headers view
|
|
|
|
|
:help "Number of recipients for this message" ;; tooltip
|
|
|
|
|
:function (lambda (msg)
|
|
|
|
|
(format "%d"
|
|
|
|
|
(+ (length (mu4e-message-field msg :to))
|
|
|
|
|
(length (mu4e-message-field msg :cc))))))))
|
2013-10-12 15:04:12 +02:00
|
|
|
|
@end lisp
|
|
|
|
|
|
2014-11-22 12:23:01 +01:00
|
|
|
|
Or, let's get the full mailing-list name:
|
|
|
|
|
@lisp
|
|
|
|
|
(add-to-list 'mu4e-header-info-custom
|
2016-01-12 20:38:07 +01:00
|
|
|
|
'(:full-mailing-list .
|
|
|
|
|
( :name "Mailing-list" ;; long name, as seen in the message-view
|
|
|
|
|
:shortname "ML" ;; short name, as seen in the headers view
|
|
|
|
|
:help "Full name for mailing list" ;; tooltip
|
|
|
|
|
:function (lambda (msg)
|
|
|
|
|
(or (mu4e-message-field msg :mailing-list) "")))))
|
2014-11-22 12:23:01 +01:00
|
|
|
|
@end lisp
|
2013-10-12 15:04:12 +02:00
|
|
|
|
|
2014-11-22 12:23:01 +01:00
|
|
|
|
You can then add the custom header to your @code{mu4e-headers-fields},
|
|
|
|
|
just like the built-in headers. After evaluation, you headers-view
|
|
|
|
|
should include a new header @t{Recip#} with the number of recipients,
|
|
|
|
|
and/or @t{ML} with the full mailing-list name.
|
|
|
|
|
|
|
|
|
|
This function can be used in both the headers-view and the message-view;
|
|
|
|
|
if you need something specific for one of these, you can check for the
|
|
|
|
|
mode in your function, or create separate functions.
|
2013-10-12 15:04:12 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node HV Actions
|
|
|
|
|
@section Actions
|
2012-04-21 11:48:00 +02:00
|
|
|
|
|
2012-06-12 09:21:44 +02:00
|
|
|
|
@code{mu4e-headers-action} (@key{a}) lets you pick custom actions to perform
|
2012-04-21 11:48:00 +02:00
|
|
|
|
on the message at point. You can specify these actions using the variable
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@code{mu4e-headers-actions}. See @ref{Actions} for the details.
|
2012-04-21 11:48:00 +02:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@t{mu4e} defines some default actions. One of those is for @emph{capturing} a
|
|
|
|
|
message: @key{a c} 'captures' the current message. Next, when you're editing
|
|
|
|
|
some message, you can include the previously captured message as an
|
|
|
|
|
attachment, using @code{mu4e-compose-attach-captured-message}. See
|
|
|
|
|
@file{mu4e-actions.el} in the @t{mu4e} source distribution for more example
|
|
|
|
|
actions.
|
2012-05-13 14:02:40 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Split view
|
|
|
|
|
@section Split view
|
2012-04-08 19:28:49 +02:00
|
|
|
|
|
2012-06-12 09:21:44 +02:00
|
|
|
|
Using the @emph{Split view}, we can see the @ref{Headers view} and the
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@ref{Message view} next to each other, with the message selected in the
|
|
|
|
|
former, visible in the latter. You can influence the way the splitting is done
|
|
|
|
|
by customizing the variable @code{mu4e-split-view}. Possible values are:
|
2012-04-21 11:48:00 +02:00
|
|
|
|
|
2012-04-08 19:28:49 +02:00
|
|
|
|
@itemize
|
|
|
|
|
@item @t{horizontal} (this is the default): display the message view below the
|
2012-10-14 16:00:25 +02:00
|
|
|
|
header view. Use @code{mu4e-headers-visible-lines} the set the number of lines
|
|
|
|
|
shown (default: 8).
|
2012-04-11 01:11:47 +02:00
|
|
|
|
@item @t{vertical}: display the message view on the
|
2012-10-14 16:00:25 +02:00
|
|
|
|
right side of the header view. Use @code{mu4e-headers-visible-columns} to set
|
|
|
|
|
the number of visible columns (default: 30).
|
2012-04-09 10:52:49 +02:00
|
|
|
|
@item anything else: don't do any splitting
|
2012-04-08 19:28:49 +02:00
|
|
|
|
@end itemize
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@noindent
|
|
|
|
|
Some useful key bindings in the split view:
|
|
|
|
|
@itemize
|
|
|
|
|
@item @key{C-+} and @key{C--}: interactively change the number of columns or
|
|
|
|
|
headers shown
|
|
|
|
|
@item You can change the selected window from the
|
|
|
|
|
headers-view to the message-view and vice-versa with
|
|
|
|
|
@code{mu4e-select-other-view}, bound to @key{y}
|
|
|
|
|
@end itemize
|
2012-04-08 19:28:49 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@node Message view
|
2012-09-30 19:12:07 +02:00
|
|
|
|
@chapter The message view
|
2011-12-17 10:33:50 +01:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
After selecting a message in the @ref{Headers view}, it appears in a message
|
2013-08-24 10:17:00 +02:00
|
|
|
|
view window, which shows the message headers, followed by the message
|
|
|
|
|
body. Its major mode is @code{mu4e-view-mode}.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@menu
|
2016-01-10 10:56:58 +01:00
|
|
|
|
* Overview: MSGV Overview. What is the Message View
|
|
|
|
|
* Keybindings: MSGV Keybindings. Do things with your keyboard
|
|
|
|
|
* Attachments:: Opening and saving them
|
|
|
|
|
* Viewing images inline::Images display inside emacs
|
|
|
|
|
* Displaying rich-text messages::Dealing with HTML mail
|
|
|
|
|
* Verifying signatures and decryption: MSGV Crypto. Support for cryptography
|
|
|
|
|
* Custom headers: MSGV Custom headers. Your own headers
|
|
|
|
|
* Actions: MSGV Actions. Defining and using actions.
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
|
|
@node MSGV Overview
|
|
|
|
|
@section Overview
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
An example message view:
|
2012-02-05 09:56:37 +01:00
|
|
|
|
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@cartouche
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@verbatim
|
2016-01-12 20:38:07 +01:00
|
|
|
|
From: randy@epiphyte.com
|
|
|
|
|
To: julia@eruditorum.org
|
|
|
|
|
Subject: Re: some pics
|
|
|
|
|
Flags: (seen attach)
|
|
|
|
|
Date: Mon 19 Jan 2004 09:39:42 AM EET
|
|
|
|
|
Maildir: /inbox
|
|
|
|
|
Attachments(2): [1]DSCN4961.JPG(1.3M), [2]DSCN4962.JPG(1.4M)
|
|
|
|
|
|
|
|
|
|
Hi Julia,
|
|
|
|
|
|
|
|
|
|
Some pics from our trip to Cerin Amroth. Enjoy!
|
|
|
|
|
|
|
|
|
|
All the best,
|
|
|
|
|
Randy.
|
|
|
|
|
|
|
|
|
|
On Sun 21 Dec 2003 09:06:34 PM EET, Julia wrote:
|
|
|
|
|
|
|
|
|
|
[....]
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end verbatim
|
2012-10-11 16:50:32 +02:00
|
|
|
|
@end cartouche
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
|
|
|
|
Some notes:
|
|
|
|
|
@itemize
|
2013-10-05 19:09:26 +02:00
|
|
|
|
@item The variable @code{mu4e-view-fields} determines the header fields to be
|
|
|
|
|
shown; see @code{mu4e-header-info} for a list of built-in fields. Apart from
|
|
|
|
|
the built-in fields, you can also create custom fields using
|
2013-10-12 15:04:12 +02:00
|
|
|
|
@code{mu4e-header-info-custom}; see @ref{MSGV Custom headers}.
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@item You can set the date format with the variable
|
|
|
|
|
@code{mu4e-date-format-long}.
|
|
|
|
|
@item By default, only the names of contacts in address fields are visible
|
|
|
|
|
(see @code{mu4e-view-show-addresses} to change this). You can view the e-mail
|
|
|
|
|
addresses by clicking on the name, or pressing @key{M-RET}.
|
|
|
|
|
@item You can compose a message for the contact at point by either clicking
|
|
|
|
|
@key{[mouse-2]} or pressing @key{C}.
|
2014-12-29 21:54:26 +01:00
|
|
|
|
@item The body text can be line-wrapped using @t{visual-line-mode}. @t{mu4e}
|
2012-09-16 21:34:11 +02:00
|
|
|
|
defines @key{w} to toggle between the wrapped and unwrapped state. If you want
|
2014-12-29 21:54:26 +01:00
|
|
|
|
to do this automatically when viewing a message, invoke @code{visual-line-mode}
|
2012-10-14 16:00:25 +02:00
|
|
|
|
in your @code{mu4e-view-mode-hook}.
|
2015-12-27 13:30:02 +01:00
|
|
|
|
@item For messages that support it, you can toggle between html and text versions using
|
|
|
|
|
@code{mu4e-view-toggle-html}, bound to @key{h};
|
|
|
|
|
@item You can hide cited parts
|
|
|
|
|
in messages (the parts starting with ``@t{>}'') using
|
|
|
|
|
@code{mu4e-view-hide-cited}, bound to @key{#}. If you want to do this
|
2012-09-16 21:34:11 +02:00
|
|
|
|
automatically for every message, invoke the function in your
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@code{mu4e-view-mode-hook}.
|
2012-05-06 15:58:00 +02:00
|
|
|
|
@item For search-related operations, see @ref{Searching}.
|
2012-10-17 17:35:23 +02:00
|
|
|
|
@item You can scroll down the message using @key{SPC}; if you do this at the
|
|
|
|
|
end of a message,it automatically takes you to the next one. If you want to
|
2012-10-17 11:07:57 +02:00
|
|
|
|
prevent this behavior, set @code{mu4e-view-scroll-to-next} to @code{nil}.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
@end itemize
|
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node MSGV Keybindings
|
|
|
|
|
@section Keybindings
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2011-12-19 08:07:03 +01:00
|
|
|
|
You can find most things you can do with this message in the @emph{View} menu,
|
2012-02-06 18:48:33 +01:00
|
|
|
|
or by using the keyboard; the default bindings are:
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2011-12-19 21:11:47 +01:00
|
|
|
|
@verbatim
|
|
|
|
|
key description
|
2012-06-14 18:10:02 +02:00
|
|
|
|
==============================================================
|
2014-11-28 07:54:08 +01:00
|
|
|
|
n,p view the next, previous message
|
|
|
|
|
],[ move to the next, previous unread message
|
2012-04-09 10:52:49 +02:00
|
|
|
|
y select the headers view (if it's visible)
|
2012-04-01 23:59:55 +02:00
|
|
|
|
|
2012-07-03 20:37:30 +02:00
|
|
|
|
RET scroll down
|
|
|
|
|
M-RET open URL at point / attachment at point
|
|
|
|
|
|
2012-10-17 11:07:57 +02:00
|
|
|
|
SPC scroll down, if at end, move to next message
|
2014-12-04 22:44:27 +01:00
|
|
|
|
S-SPC scroll up
|
2012-10-17 11:07:57 +02:00
|
|
|
|
|
2012-06-14 18:10:02 +02:00
|
|
|
|
searching
|
|
|
|
|
---------
|
2012-05-06 15:58:00 +02:00
|
|
|
|
s search
|
2012-05-10 08:56:02 +02:00
|
|
|
|
e edit last query
|
2012-05-06 15:58:00 +02:00
|
|
|
|
/ narrow the search
|
|
|
|
|
b search bookmark
|
2012-05-10 08:56:02 +02:00
|
|
|
|
B edit bookmark before search
|
2012-04-01 23:59:55 +02:00
|
|
|
|
j jump to maildir
|
2012-05-06 15:58:00 +02:00
|
|
|
|
|
2012-05-10 08:56:02 +02:00
|
|
|
|
M-left previous query
|
2012-05-13 14:02:40 +02:00
|
|
|
|
M-right next query
|
2012-04-01 23:59:55 +02:00
|
|
|
|
|
2012-06-14 18:10:02 +02:00
|
|
|
|
marking
|
|
|
|
|
-------
|
2011-12-19 21:11:47 +01:00
|
|
|
|
d mark for moving to the trash folder
|
2014-08-08 13:18:29 +02:00
|
|
|
|
= mark for removing trash flag ('untrash')
|
2012-09-27 16:21:45 +02:00
|
|
|
|
DEL,D mark for complete deletion
|
2011-12-19 21:11:47 +01:00
|
|
|
|
m mark for moving to another maildir folder
|
2012-09-27 16:21:45 +02:00
|
|
|
|
r mark for refiling
|
2012-05-13 14:02:40 +02:00
|
|
|
|
+,- mark for flagging/unflagging
|
2012-06-14 18:10:02 +02:00
|
|
|
|
|
2011-12-19 21:11:47 +01:00
|
|
|
|
u unmark message at point
|
2012-06-20 19:42:39 +02:00
|
|
|
|
U unmark *all* messages
|
2012-06-14 18:10:02 +02:00
|
|
|
|
|
2012-04-24 21:37:50 +02:00
|
|
|
|
% mark based on a regular expression
|
2012-04-28 08:12:54 +02:00
|
|
|
|
T,t mark whole thread, subthread
|
2012-04-24 21:37:50 +02:00
|
|
|
|
|
2014-08-21 04:11:39 +02:00
|
|
|
|
<insert>,* mark for 'something' (decide later)
|
2012-10-06 19:47:59 +02:00
|
|
|
|
# resolve deferred 'something' marks
|
2012-06-14 18:10:02 +02:00
|
|
|
|
|
|
|
|
|
x execute actions for the marked messages
|
|
|
|
|
|
|
|
|
|
composition
|
|
|
|
|
-----------
|
2011-12-19 21:11:47 +01:00
|
|
|
|
R,F,C reply/forward/compose
|
|
|
|
|
E edit (only allowed for draft messages)
|
|
|
|
|
|
2012-06-14 18:10:02 +02:00
|
|
|
|
actions
|
|
|
|
|
-------
|
2011-12-19 21:11:47 +01:00
|
|
|
|
g go to (visit) numbered URL (using `browse-url')
|
2016-01-10 10:56:58 +01:00
|
|
|
|
(or: <mouse-1> or M-RET with point on url)
|
|
|
|
|
C-u g visits multiple URLs
|
2016-01-10 12:06:10 +01:00
|
|
|
|
f fetch (download )the numbered URL.
|
|
|
|
|
C-u f fetches multiple URLs
|
2015-03-21 14:22:12 +01:00
|
|
|
|
k save the numbered URL in the kill-ring.
|
2016-01-10 10:56:58 +01:00
|
|
|
|
C-u k saves multiple URLs
|
2015-03-21 14:22:12 +01:00
|
|
|
|
|
2011-12-26 11:18:44 +01:00
|
|
|
|
e extract (save) attachment (asks for number)
|
2016-01-10 10:56:58 +01:00
|
|
|
|
(or: <mouse-2> or S-RET with point on attachment)
|
|
|
|
|
C-u e extracts multiple attachments
|
2011-12-26 11:18:44 +01:00
|
|
|
|
o open attachment (asks for number)
|
2016-01-10 10:56:58 +01:00
|
|
|
|
(or: <mouse-1> or M-RET with point on attachment)
|
2012-06-14 18:10:02 +02:00
|
|
|
|
|
|
|
|
|
a execute some custom action on the message
|
|
|
|
|
A execute some custom action on an attachment
|
|
|
|
|
|
|
|
|
|
misc
|
|
|
|
|
----
|
2015-12-13 16:44:47 +01:00
|
|
|
|
; switch focus
|
2013-04-15 22:41:26 +02:00
|
|
|
|
c copy address at point (with C-u copy long version)
|
2015-12-27 09:28:11 +01:00
|
|
|
|
|
|
|
|
|
h toggle between html/text (if available)
|
2011-12-19 21:11:47 +01:00
|
|
|
|
w toggle line wrapping
|
2015-12-27 13:30:02 +01:00
|
|
|
|
# toggle show/hide cited parts
|
2011-12-19 21:11:47 +01:00
|
|
|
|
|
2012-07-19 10:42:38 +02:00
|
|
|
|
v show details about the cryptographic signature
|
|
|
|
|
|
2012-06-14 18:10:02 +02:00
|
|
|
|
. show the raw message view. 'q' takes you back.
|
|
|
|
|
C-+,C-- increase / decrease the number of headers shown
|
2011-12-19 21:11:47 +01:00
|
|
|
|
H get help
|
2012-10-25 10:59:50 +02:00
|
|
|
|
C-S-u update mail & reindex
|
2016-02-06 11:48:14 +01:00
|
|
|
|
q leave the message view
|
2011-12-19 21:11:47 +01:00
|
|
|
|
@end verbatim
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-04-28 08:12:54 +02:00
|
|
|
|
For the marking commands, please refer to @ref{Marking messages}.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2016-01-10 10:56:58 +01:00
|
|
|
|
@node Attachments
|
|
|
|
|
@section Attachments
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2012-10-03 11:53:24 +02:00
|
|
|
|
By default, @t{mu4e} uses the @t{xdg-open}-program
|
2015-12-27 13:30:02 +01:00
|
|
|
|
@footnote{@url{http://portland.freedesktop.org/wiki/}} or (on OS X) the
|
|
|
|
|
@t{open} program for opening attachments. If you want to use another
|
|
|
|
|
program, you do so by setting the @t{MU_PLAY_PROGRAM} environment
|
|
|
|
|
variable to the program to be used.
|
2011-12-19 08:07:03 +01:00
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
The default directory for extracting (saving) attachments is your home
|
|
|
|
|
directory (@file{~/}); you can change this using the variable
|
|
|
|
|
@code{mu4e-attachment-dir}, for example:
|
2012-03-28 18:00:26 +02:00
|
|
|
|
|
|
|
|
|
@lisp
|
2012-10-03 11:53:24 +02:00
|
|
|
|
(setq mu4e-attachment-dir "~/Downloads")
|
|
|
|
|
@end lisp
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
For more flexibility, @code{mu4e-attachment-dir} can also be a user-provided
|
2012-10-03 11:53:24 +02:00
|
|
|
|
function. This function receives two parameters: the file-name and the
|
2013-08-24 10:17:00 +02:00
|
|
|
|
mime-type as found in the e-mail message@footnote{sadly, often
|
|
|
|
|
@t{application/octet-stream} is used for the mime-type, even if a better type
|
|
|
|
|
is available} of the attachment, either or both of which can be @t{nil}. For
|
|
|
|
|
example:
|
2012-10-03 11:53:24 +02:00
|
|
|
|
|
|
|
|
|
@lisp
|
|
|
|
|
(setq mu4e-attachment-dir
|
2016-01-12 20:38:07 +01:00
|
|
|
|
(lambda (fname mtype)
|
|
|
|
|
(cond
|
|
|
|
|
;; docfiles go to ~/Desktop
|
|
|
|
|
((and fname (string-match "\\.doc$" fname)) "~/Desktop")
|
|
|
|
|
;; ... other cases ...
|
|
|
|
|
(t "~/Downloads")))) ;; everything else
|
2012-03-28 18:00:26 +02:00
|
|
|
|
@end lisp
|
|
|
|
|
|
2012-10-14 16:00:25 +02:00
|
|
|
|
You can extract multiple attachments at once by prefixing the extracting
|
|
|
|
|
command by @key{C-u}; so @kbd{C-u e} asks you for a range of attachments to
|
|
|
|
|
extract (for example, @kbd{1 3-6 8}). The range "@samp{a}" is a shortcut for
|
|
|
|
|
@emph{all} attachments.
|
2012-06-07 15:24:58 +02:00
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Viewing images inline
|
|
|
|
|
@section Viewing images inline
|
2012-05-16 19:47:13 +02:00
|
|
|
|
|
|
|
|
|
It is possible to show images inline in the message view buffer if you run
|
2012-10-14 16:00:25 +02:00
|
|
|
|
@command{emacs} in GUI-mode. You can enable this by setting the variable
|
|
|
|
|
@code{mu4e-view-show-images} to @t{t}. Since @command{emacs} does not always
|
|
|
|
|
handle images correctly, this is not enabled by default. If you are using
|
|
|
|
|
@command{emacs} 24 with
|
|
|
|
|
@emph{ImageMagick}@footnote{@url{http://www.imagemagick.org}} support, make
|
|
|
|
|
sure you call @code{imagemagick-register-types} in your configuration, so it
|
|
|
|
|
is used for images.
|
2012-05-16 19:47:13 +02:00
|
|
|
|
|
|
|
|
|
@lisp
|
|
|
|
|
;; enable inline images
|
2012-06-05 14:43:18 +02:00
|
|
|
|
(setq mu4e-view-show-images t)
|
2012-05-16 19:47:13 +02:00
|
|
|
|
;; use imagemagick, if available
|
|
|
|
|
(when (fboundp 'imagemagick-register-types)
|
2016-01-12 20:38:07 +01:00
|
|
|
|
(imagemagick-register-types))
|
2012-05-16 19:47:13 +02:00
|
|
|
|
@end lisp
|
|
|
|
|
|
2012-09-29 12:30:49 +02:00
|
|
|
|
@node Displaying rich-text messages
|
|
|
|
|
@section Displaying rich-text messages
|
2012-04-02 19:00:42 +02:00
|
|
|
|
|
2015-12-27 09:28:11 +01:00
|
|
|
|
@t{mu4e} normally prefers the plain-text version for messages that
|
|
|
|
|
consist of both a plain-text and html (rich-text) versions of the
|
|
|
|
|
body-text. You can change this by setting @code{mu4e-view-prefer-html}
|
|
|
|
|
to @t{t}. And you can toggle this value (globally) using @kbd{h} in the
|
|
|
|
|
message view; this also refreshes the message with the new setting.
|
2012-04-30 16:48:07 +02:00
|
|
|
|
|
2016-02-08 20:08:54 +01:00
|
|
|
|
Note, when using html-based rendering, you don't get the hyperlink
|
|
|
|
|
shortcuts the text-version provides.
|
|
|
|
|
|
2014-11-01 11:41:55 +01:00
|
|
|
|
If there is only an html-version, or if the plain-text version is too
|
2015-12-27 09:28:11 +01:00
|
|
|
|
short in comparison with the html part@footnote{this is e.g. for the
|
|
|
|
|
case where the text-part is only a short blurb telling you to use the
|
|
|
|
|
html-version; see @code{mu4e-view-html-plaintext-ratio-heuristic}},
|
2014-11-01 11:41:55 +01:00
|
|
|
|
@t{mu4e} tries to convert the html into plain-text for display.
|
|
|
|
|
|
2016-02-07 13:33:24 +01:00
|
|
|
|
With emacs 24.4 or newer, this defaults to @code{mu4e-shr2text}, which
|
|
|
|
|
uses the built-in @t{shr} renderer. For older emacs versions, this
|
|
|
|
|
defaults to the built-in @code{html2text} function. In practice, the
|
|
|
|
|
latter gives much better results.
|
|
|
|
|
|
|
|
|
|
If you use @code{mu4e-shr2text}, it might be useful to emulate some of
|
|
|
|
|
the @t{shr} key bindings, with something like:
|
|
|
|
|
@lisp
|
|
|
|
|
(add-hook 'mu4e-view-mode-hook
|
|
|
|
|
(lambda()
|
|
|
|
|
;; try to emulate some of the eww key-bindings
|
|
|
|
|
(local-set-key (kbd "<tab>") 'shr-next-link)
|
|
|
|
|
(local-set-key (kbd "<backtab>") 'shr-previous-link)))
|
|
|
|
|
@end lisp
|
|
|
|
|
|
|
|
|
|
If you're using a dark theme, and the messages are hard to read, it can help to change
|
|
|
|
|
the luminosity, e.g.:
|
|
|
|
|
@lisp
|
|
|
|
|
(setq shr-color-visible-luminance-min 80)
|
|
|
|
|
@end lisp
|
|
|
|
|
|
|
|
|
|
If your emacs does not have @t{shr} yet, it can be useful to use a
|
|
|
|
|
custom method. For that, you can set the variable
|
|
|
|
|
@code{mu4e-html2text-command} to either a shell command or a function
|
2014-11-01 11:41:55 +01:00
|
|
|
|
instead.
|
2016-02-07 13:33:24 +01:00
|
|
|
|
|