]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix storing email into nnmail by Gnus
authorEli Zaretskii <eliz@gnu.org>
Mon, 19 Dec 2022 17:01:04 +0000 (19:01 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 19 Dec 2022 17:01:04 +0000 (19:01 +0200)
* lisp/gnus/nnml.el (nnml--encode-headers): Wrap
'rfc2047-encode-string' calls with 'ignore-errors', to avoid
disrupting email workflows due to possibly-invalid headers.
Reported by Florian Weimer <fweimer@redhat.com>.

lisp/gnus/nnml.el

index 40e4b9ea828140c8e879fbe281778695cd82f2bd..7aa445e66466bec076d5cc5c0a07a23c04af4dda 100644 (file)
@@ -776,17 +776,22 @@ article number.  This function is called narrowed to an article."
        (nnml--encode-headers headers)
        headers))))
 
+;; RFC2047-encode Subject and From, but leave invalid headers unencoded.
 (defun nnml--encode-headers (headers)
   (let ((subject (mail-header-subject headers))
        (rfc2047-encoding-type 'mime))
     (unless (string-match "\\`[[:ascii:]]*\\'" subject)
-      (setf (mail-header-subject headers)
-           (mail-encode-encoded-word-string subject t))))
+      (let ((encoded-subject
+             (ignore-errors (mail-encode-encoded-word-string subject t))))
+        (if encoded-subject
+            (setf (mail-header-subject headers) encoded-subject)))))
   (let ((from (mail-header-from headers))
        (rfc2047-encoding-type 'address-mime))
     (unless (string-match "\\`[[:ascii:]]*\\'" from)
-      (setf (mail-header-from headers)
-           (rfc2047-encode-string from t)))))
+      (let ((encoded-from
+             (ignore-errors (rfc2047-encode-string from t))))
+        (if encoded-from
+            (setf (mail-header-from headers) encoded-from))))))
 
 (defun nnml-get-nov-buffer (group &optional incrementalp)
   (let ((buffer (gnus-get-buffer-create