]> git.eshelyaron.com Git - emacs.git/commitdiff
Teach Mail mode to request Disposition Notifications
authorEli Zaretskii <eliz@gnu.org>
Sun, 19 Sep 2021 08:44:22 +0000 (11:44 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 19 Sep 2021 08:44:22 +0000 (11:44 +0300)
* lisp/mail/sendmail.el (mail-insert-disposition-notification-to):
New function.
(mail-mode-map): Add it to key bindings and menu bar.

lisp/mail/sendmail.el

index fee11c06aa7b43ebfc05e6b71aa3940594a9beb2..312805f6d8f679fca2dd0ba56af2f69526517c29 100644 (file)
@@ -277,6 +277,7 @@ The default value matches citations like `foo-bar>' plus whitespace."
     (define-key map "\C-c\C-f\C-r" 'mail-reply-to)
     (define-key map "\C-c\C-f\C-a" 'mail-mail-reply-to)    ; author
     (define-key map "\C-c\C-f\C-l" 'mail-mail-followup-to) ; list
+    (define-key map "\C-c\C-f\C-d" 'mail-insert-disposition-notification-to)
     (define-key map "\C-c\C-t" 'mail-text)
     (define-key map "\C-c\C-y" 'mail-yank-original)
     (define-key map "\C-c\C-r" 'mail-yank-region)
@@ -325,6 +326,9 @@ The default value matches citations like `foo-bar>' plus whitespace."
     (define-key map [menu-bar headers expand-aliases]
       '("Expand Aliases" . expand-mail-aliases))
 
+    (define-key map [menu-bar headers disposition-notification]
+      '("Disposition-Notification-To" . mail-insert-disposition-notification-to))
+
     (define-key map [menu-bar headers mail-reply-to]
       '("Mail-Reply-To" . mail-mail-reply-to))
 
@@ -1598,6 +1602,25 @@ Returns non-nil if FIELD was originally present."
   (interactive)
   (expand-abbrev)
   (goto-char (mail-text-start)))
+
+(defun mail-insert-disposition-notification-to ()
+  "Insert a Disposition-Notification-To header, if it doesn't already exist."
+  (interactive)
+  (expand-abbrev)
+  (save-excursion
+    (or (mail-position-on-field "Disposition-Notification-To")
+        (insert
+        (format
+         "%s"
+         (save-excursion
+            (save-restriction
+              (message-narrow-to-headers)
+              (or (mail-fetch-field "Reply-To")
+                  (mail-fetch-field "From")
+                  (with-temp-buffer
+                    (mail-insert-from-field)
+                    (substring (buffer-string) (length "From: ") -1))))))))))
+
 \f
 (defun mail-signature (&optional atpoint)
   "Sign letter with signature.