Don't use obsolete In-Reply-To format in messages (Bug#64454)

When creating a new message, message-send-mail uses an obsolete format
for the In-Reply-To header that includes additional information about
the originating message.  This patch changes the default to use the
rfc5322 approved format, but allow the obsolete format through a
defcustom.

* lisp/gnus/message.el (message-make-in-reply-to): Return only the
message-id of the originating message (the default) unless the new
custom variable message-header-use-obsolete-in-reply-to is non-nil.
* doc/misc/message.texi: Document the new custom variable
message-header-use-obsolete-in-reply-to.
* etc/NEWS: Update NEWS.
This commit is contained in:
Andrew G Cohen 2023-07-05 15:21:16 +08:00
parent 40e38a681d
commit 2eb6171ec9
3 changed files with 54 additions and 28 deletions

View file

@ -1791,6 +1791,12 @@ member list with elements @code{CC} and @code{To}, then
@code{message-carefully-insert-headers} will not insert a @code{To}
header when the message is already @code{CC}ed to the recipient.
@item message-header-use-obsolete-in-reply-to
@vindex message-header-use-obsolete-in-reply-to
When non-@code{nil}, use an obsolete form of the @code{In-Reply-To}
header that includes a parenthetical phrase with details of the
originating email following the message id. The default is @code{nil}.
@item message-syntax-checks
@vindex message-syntax-checks
Controls what syntax checks should not be performed on outgoing posts.

View file

@ -484,6 +484,16 @@ If 'save-place-autosave-interval' is nil, auto saving is disabled; this
is the default. As before, saved places are scheduled to be saved at
Emacs exit.
** Message
---
*** In-Reply-To header contains only a message id.
The In-Reply-To header created when replying to a message now contains
only the originating message's id, conforming to RFC5322. The previous
behavior included additional information about the originating message.
The new variable 'message-header-use-obsolete-in-reply-to', nil by
default, can be set to a non-nil value to restore the previous behavior.
** Gnus
---

View file

@ -113,6 +113,13 @@
:group 'message
:group 'faces)
(defcustom message-header-use-obsolete-in-reply-to nil
"Include extra information in the In-Reply-To header.
This form has been obsolete since RFC 2822."
:group 'message-headers
:version "31.1"
:type 'boolean)
(defcustom message-directory "~/Mail/"
"Directory from which all other mail file variables are derived."
:group 'message-various
@ -5993,35 +6000,38 @@ In posting styles use `(\"Expires\" (make-expires-date 30))'."
"Return the In-Reply-To header for this message."
(when message-reply-headers
(let ((from (mail-header-from message-reply-headers))
(date (mail-header-date message-reply-headers))
(msg-id (mail-header-id message-reply-headers)))
(date (mail-header-date message-reply-headers))
(msg-id (mail-header-id message-reply-headers)))
(when from
(let ((name (mail-extract-address-components from)))
(concat
msg-id (if msg-id " (")
(if (car name)
(if (string-match "[^[:ascii:]]" (car name))
;; Quote a string containing non-ASCII characters.
;; It will make the RFC2047 encoder cause an error
;; if there are special characters.
(mm-with-multibyte-buffer
(insert (car name))
(goto-char (point-min))
(while (search-forward "\"" nil t)
(when (prog2
(backward-char)
(zerop (% (skip-chars-backward "\\\\") 2))
(goto-char (match-beginning 0)))
(insert "\\"))
(forward-char))
;; Those quotes will be removed by the RFC2047 encoder.
(concat "\"" (buffer-string) "\""))
(car name))
(nth 1 name))
"'s message of \""
(if (or (not date) (string= date ""))
"(unknown date)" date)
"\"" (if msg-id ")")))))))
(let ((name (mail-extract-address-components from)))
(concat
msg-id
(when message-header-use-obsolete-in-reply-to
(concat
(if msg-id " (")
(if (car name)
(if (string-match "[^[:ascii:]]" (car name))
;; Quote a string containing non-ASCII characters.
;; It will make the RFC2047 encoder cause an error
;; if there are special characters.
(mm-with-multibyte-buffer
(insert (car name))
(goto-char (point-min))
(while (search-forward "\"" nil t)
(when (prog2
(backward-char)
(zerop (% (skip-chars-backward "\\\\") 2))
(goto-char (match-beginning 0)))
(insert "\\"))
(forward-char))
;; Those quotes will be removed by the RFC2047 encoder.
(concat "\"" (buffer-string) "\""))
(car name))
(nth 1 name))
"'s message of \""
(if (or (not date) (string= date ""))
"(unknown date)" date)
"\"" (if msg-id ")")))))))))
(defun message-make-distribution ()
"Make a Distribution header."