Change how Mail-Copies-To: never is handled in Message

* lisp/gnus/message.el (message-get-reply-headers): Change how
Mail-Copies-To: never is handled (bug#37591).  When that header is
present, put all the remaining recipients in the To header,
instead of picking an arbitrary recipient to have in the To
header, and the rest in the Cc header.
This commit is contained in:
Lars Ingebrigtsen 2020-08-06 15:53:24 +02:00
parent 51d063e484
commit d3fabff99d
2 changed files with 32 additions and 9 deletions

View file

@ -236,6 +236,16 @@ not.
** Message
---
*** A change to how Mail-Copies-To: never is handled.
If a user has specified Mail-Copies-To: never, and Message was asked
to do a "wide reply", some other arbitrary recipient would end up in
the resulting To header, while the remaining recipients would be put
in the Cc header. This is somewhat misleading, as it looks like
you're responding to a specific person in particular. This has been
changed so that all the recipients are put in the To header in these
instances.
+++
*** New function to start Emacs in Message mode to send an email.
Emacs can be defined as a handler for the "x-scheme-handler/mailto"

View file

@ -6998,15 +6998,28 @@ want to get rid of this query permanently.")))
;; Build the header alist. Allow the user to be asked whether
;; or not to reply to all recipients in a wide reply.
(setq follow-to (list (cons 'To (cdr (pop recipients)))))
(when (and recipients
(or (not message-wide-reply-confirm-recipients)
(y-or-n-p "Reply to all recipients? ")))
(setq recipients (mapconcat
(lambda (addr) (cdr addr)) recipients ", "))
(if (string-match "^ +" recipients)
(setq recipients (substring recipients (match-end 0))))
(push (cons 'Cc recipients) follow-to)))
(when (or (< (length recipients) 2)
(not message-wide-reply-confirm-recipients)
(y-or-n-p "Reply to all recipients? "))
(if never-mct
;; The author has requested never to get a (wide)
;; response, so put everybody else into the To header.
;; This avoids looking as if we're To-in somebody else in
;; specific, and just Cc-in the rest.
(setq follow-to (list
(cons 'To
(mapconcat
(lambda (addr)
(cdr addr)) recipients ", "))))
;; Put the first recipient in the To header.
(setq follow-to (list (cons 'To (cdr (pop recipients)))))
;; Put the rest of the recipients in Cc.
(when recipients
(setq recipients (mapconcat
(lambda (addr) (cdr addr)) recipients ", "))
(if (string-match "^ +" recipients)
(setq recipients (substring recipients (match-end 0))))
(push (cons 'Cc recipients) follow-to)))))
follow-to))
(defun message-prune-recipients (recipients)