C.1 General

C.1.1 Results from mu and mu4e differ - why?

In general, the same queries for mu and mu4e should yield the same results. If they differ, this is usually because one of the following reasons:

C.1.2 The unread/all counts in the main-screen differ from the ’real’ numbers - what’s going on?

For speed reasons, the counts do not exclude messages that no longer exist in the file-system, nor does it exclude duplicate messages; See mu-mu4e-differ.

C.1.3 How can I quickly delete/move/trash a lot of messages?

You can select (’mark’ in Emacs-speak) messages, just like you would select text in a buffer; the actions you then take (e.g., DEL for delete, m for move and t for trash) apply to all selected messages. You can also use functions like mu4e-headers-mark-thread (T), mu4e-headers-mark-subthread (t) to mark whole threads at the same time, and mu4e-headers-mark-pattern (%) to mark all messages matching a certain regular expression.

C.1.4 Can I automatically apply the marks on messages when leaving the headers buffer?

Yes you can — see the documentation for the variable mu4e-headers-leave-behavior.

C.1.5 How can I set mu4e as the default e-mail client in Emacs?

See Default email client.

C.1.6 Can mu4e use some fancy Unicode instead of these boring plain-ASCII ones?

Glad you asked! Yes, if you set mu4e-use-fancy-chars to t, mu4e uses such fancy characters in a number of places. Since not all fonts include all characters, you may want to install the unifont and/or symbola fonts on your system.

C.1.7 Can I start mu4e in the background?

Yes — if you provide a prefix-argument (C-u), mu4e starts, but does not show the main-window.

C.1.8 Does mu4e support searching for CJK (Chinese-Japanese-Korean) characters?

Only partially. If you have Xapian 1.2.8 or newer, and set the environment variable XAPIAN_CJK_NGRAM to non-empty before indexing, both when using mu from the command-line and from mu4e.

C.1.9 How can I customize the function to select a folder?

The mu4e-completing-read-function variable can be customized to select a folder in any way. The variable can be set to a function that receives five arguments, following completing-read. The default value is ido-completing-read; to use emacs’s default behavior, set the variable to completing-read. Helm users can use the same value, and by enabling helm-mode use helm-style completion.

C.1.10 With a lot of Maildir folders, jumping to them can get slow. What can I do?

Set mu4e-cache-maildir-list to t (make sure to read its docstring).

C.1.11 How can I hide certain messages from the search results?

See the variables mu4e-headers-hide-predicate and mu4e-headers-hide-enabled. The latter can be toggled through mu4e-headers-toggle-property.

For example, to filter out GMail’s spam folder, set it to:

(setq mu4e-headers-hide-predicate
     (lambda (msg)
       (string-suffix-p "Spam" (mu4e-message-field msg :maildir))))

C.1.12 I’m getting an error ’Variable binding depth exceeds max-specpdl-size’ when using mu4e – what can I do about it?

The error occurs because mu4e is binding more variables than emacs allows for, by default. You can avoid this by setting a higher value, e.g. by adding the following to your configuration:

(setq max-specpdl-size 5000)

Note that Emacs 29 obsoletes this variable.