Function: message-mail
message-mail is an autoloaded, interactive and byte-compiled function
defined in message.el.gz.
Signature
(message-mail &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS RETURN-ACTION &rest _)
Documentation
Start editing a mail message to be sent.
OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether to continue editing a message already being composed. SWITCH-FUNCTION is a function used to switch to and display the mail buffer.
Key Bindings
Aliases
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/message.el.gz
;;;
;;; Commands for interfacing with message
;;;
;;;###autoload
(defun message-mail (&optional to subject other-headers continue
switch-function yank-action send-actions
return-action &rest _)
"Start editing a mail message to be sent.
OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
to continue editing a message already being composed. SWITCH-FUNCTION
is a function used to switch to and display the mail buffer."
(interactive)
(let ((message-this-is-mail t)
message-buffers)
;; Search for the existing message buffer if `continue' is non-nil.
(if (and continue
(setq message-buffers (message-buffers)))
(pop-to-buffer (car message-buffers))
;; Start a new buffer.
(unless (message-mail-user-agent)
(message-pop-to-buffer (message-buffer-name "mail" to) switch-function))
(message-setup
(nconc
`((To . ,(or to "")) (Subject . ,(or subject "")))
;; C-h f compose-mail says that headers should be specified as
;; (string . value); however all the rest of message expects
;; headers to be symbols, not strings (eg message-header-format-alist).
;; https://lists.gnu.org/r/emacs-devel/2011-01/msg00337.html
;; We need to convert any string input, eg from rmail-start-mail.
(dolist (h other-headers other-headers)
(when (stringp (car h))
(setcar h (intern (capitalize (car h)))))
;; Firefox sends us In-Reply-To headers that are Message-IDs
;; without <> around them. Fix that.
(when (and (eq (car h) 'In-Reply-To)
(stringp (cdr h))
;; Looks like a Message-ID.
(string-match-p "\\`[^ @]+@[^ @]+\\'" (cdr h))
(not (string-match-p "\\`<.*>\\'" (cdr h))))
(setcdr h (concat "<" (cdr h) ">")))))
yank-action send-actions continue switch-function
return-action))))