Sometimes the normal headers that mu4e offers (Date, From, To,
Subject, etc.) may not be enough. For these cases, mu4e offers
custom headers in both the headers-view and the message-view.
You can do so by adding a description of your custom header to
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
(Message functions).
(add-to-list 'mu4e-header-info-custom
'(: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))))))))
Or, let’s get the contents of the Jabber-ID header.
(add-to-list 'mu4e-header-info-custom
'(:jabber-id .
( :name "Jabber-ID" ;; long name, as seen in the message-view
:shortname "JID" ;; short name, as seen in the headers view
:help "The Jabber ID" ;; tooltip
;; uses mu4e-fetch-field which is rel. slow, so only appropriate
;; for mu4e-view-fields, and _not_ mu4e-headers-fields
:function (lambda (msg)
(or (mu4e-fetch-field msg "Jabber-ID") "")))))
You can then add the custom header to your mu4e-headers-fields or
mu4e-view-fields, just like the built-in headers. However, there is an
important caveat: when your custom header in mu4e-headers-fields, the
function is invoked for each of your message headers in search results, and if
it is slow, would dramatically slow down mu4e.