You know the bit of text that appears before the quoted email when you reply to someone? Of course you can customise this in mu4e. By default a quoted reply will be preceded with something like
"On Mon, 30 Jan 2017, Joe Bloggs wrote:"
I wanted to include the time and email address of the sender, so I customised the variable message-citation-line-format
as follows
;; customize the reply-quote-string (setq message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n") ;; choose to use the formatted string (setq message-citation-line-function 'message-insert-formatted-citation-line)
which translates to something like this
On Mon 30 Jan 2017 at 19:17, Joe Bloggs <joebloggs@domain.com> wrote:
The formatting options can be found by looking up the help for the variable with C-h v message-citation-line-format
.
Sadly, this change broke my function to extract the sender name for my email template. Here is an updated version:
;; function to return first name of email recipients ;; used by yasnippet ;; inspired by ;;http://blog.binchen.org/posts/how-to-use-yasnippets-to-produce-email-templates-in-emacs.html (defun bjm/mu4e-get-names-for-yasnippet () "Return comma separated string of names for an email" (interactive) (let ((email-name "") str email-string email-list email-name2 tmpname) (save-excursion (goto-char (point-min)) ;; first line in email could be some hidden line containing NO to field (setq str (buffer-substring-no-properties (point-min) (point-max)))) ;; take name from TO field - match series of names (when (string-match "^To: \"?\\(.+\\)" str) (setq email-string (match-string 1 str))) ;;split to list by comma (setq email-list (split-string email-string " *, *")) ;;loop over emails (dolist (tmpstr email-list) ;;get first word of email string (setq tmpname (car (split-string tmpstr " "))) ;;remove whitespace or "" (setq tmpname (replace-regexp-in-string "[ \"]" "" tmpname)) ;;join to string (setq email-name (concat email-name ", " tmpname))) ;;remove initial comma (setq email-name (replace-regexp-in-string "^, " "" email-name)) ;;see if we want to use the name in the FROM field ;;get name in FROM field if available, but only if there is only ;;one name in TO field (if (< (length email-list) 2) (when (string-match "^On.+, \\([^ ,\n]+\\).+wrote:$" str) (progn (setq email-name2 (match-string 1 str)) ;;prefer name in FROM field if TO field has "@" (when (string-match "@" email-name) (setq email-name email-name2)) ))) email-name))