Mercurial > emacs
changeset 9010:9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
and then discard those in rmail-retry-ignored-headers. Delete
usage of rmail-retry-setup-hook. Bind mail-signature and
mail-setup-hook to nil when composing retry buffer.
Handle mail-self-blind.
(rmail-retry-ignored-headers): New variable,
specifying the headers that should be removed by rmail-retry-failure.
(rmail-retry-setup-hook): Obsolete variable (see below), deleted.
(rmail-clear-headers): New optional arg is list of headers to clear.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 23 Sep 1994 04:37:16 +0000 |
parents | 7cdfcd5e71ff |
children | cece83c47ca5 |
files | lisp/mail/rmail.el |
diffstat | 1 files changed, 39 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/rmail.el Thu Sep 22 22:00:06 1994 +0000 +++ b/lisp/mail/rmail.el Fri Sep 23 04:37:16 1994 +0000 @@ -67,12 +67,16 @@ It is useful to set this variable in the site customization file.") ;;;###autoload -(defvar rmail-ignored-headers "^via:\\|^mail-from:\\|^origin:\\|^status:\\|\ +(defvar rmail-ignored-headers "^via:\\|^mail-from:\\|^origin:\\|^status:\\|^received:\\|^x400-originator:\\|^x400-recipients:\\|^x400-received:\\|^x400-mts-identifier:\\|^x400-content-type:\\|^\\(resent-\\|\\)message-id:\\|^summary-line:" "\ ^received:\\|^x400-originator:\\|^x400-recipients:\\|^x400-received:\\|\ ^x400-mts-identifier:\\|^x400-content-type:\\|^message-id:\\|^summary-line:" "*Regexp to match Header fields that Rmail should normally hide.") ;;;###autoload +(defvar rmail-retry-ignored-headers nil "\ +*Headers that should be stripped when retrying a failed message.") + +;;;###autoload (defvar rmail-highlighted-headers "^From:\\|^Subject:" "\ *Regexp to match Header fields that Rmail should normally highlight. A value of nil means don't highlight. @@ -98,10 +102,6 @@ "*Non-nil means Rmail makes a new frame for composing outgoing mail.") ;;;###autoload -(defvar rmail-retry-setup-hook nil - "Hook that `rmail-retry-failure' uses in place of `mail-setup-hook'.") - -;;;###autoload (defvar rmail-secondary-file-directory "~/" "*Directory for additional secondary Rmail files.") ;;;###autoload @@ -1165,14 +1165,15 @@ (if rmail-ignored-headers (rmail-clear-headers)) (if rmail-message-filter (funcall rmail-message-filter)))) -(defun rmail-clear-headers () +(defun rmail-clear-headers (&optional ignored-headers) + (or ignored-headers (setq ignored-headers rmail-ignored-headers)) (if (search-forward "\n\n" nil t) (save-restriction - (narrow-to-region (point-min) (point)) + (narrow-to-region (point-min) (point)) (let ((buffer-read-only nil)) (while (let ((case-fold-search t)) (goto-char (point-min)) - (re-search-forward rmail-ignored-headers nil t)) + (re-search-forward ignored-headers nil t)) (beginning-of-line) (delete-region (point) (progn (re-search-forward "\n[^ \t]") @@ -2150,10 +2151,12 @@ For a message rejected by the mail system, extract the interesting headers and the body of the original message. The variable `mail-unsent-separator' should match the string that -delimits the returned original message." +delimits the returned original message. +The variable `rmail-retry-ignored-headers' is a regular expression +specifying headers which should not be copied into the new message." (interactive) (require 'mail-utils) - (let (to subj irp2 cc orig-message) + (let (mail-buffer bounce-start bounce-end resending) (save-excursion ;; Narrow down to just the quoted original message (rmail-beginning-of-message) @@ -2170,33 +2173,39 @@ (progn (search-forward "\n\n") (skip-chars-forward "\n"))) + (beginning-of-line) (narrow-to-region (point) (point-max)) - (goto-char (point-min)) - (search-forward "\n\n") - (narrow-to-region (point-min) (point)) - ;; Now mail-fetch-field will get from headers of the original message, - ;; not from the headers of the rejection. - (setq to (mail-fetch-field "To") - subj (mail-fetch-field "Subject") - irp2 (mail-fetch-field "In-reply-to") - cc (mail-fetch-field "Cc")) - ;; Get the entire text (not headers) of the original message. - (goto-char (point-max)) - (widen) - (setq orig-message - (buffer-substring (point) old-end))))) + (setq mail-buffer (current-buffer) + bounce-start (point) + bounce-end (point-max)) + (or (search-forward "\n\n" nil t) + (error "Cannot find end of header in failed message"))))) ;; Start sending a new message; default header fields from the original. ;; Turn off the usual actions for initializing the message body ;; because we want to get only the text from the failure message. - (let (mail-signature - (mail-setup-hook rmail-retry-setup-hook)) - (if (rmail-start-mail nil to subj irp2 cc (current-buffer)) + (let (mail-signature mail-setup-hook) + (if (rmail-start-mail nil nil nil nil nil mail-buffer) ;; Insert original text as initial text of new draft message. (progn - (goto-char (point-max)) - (insert orig-message) + (erase-buffer) + (insert-buffer-substring mail-buffer bounce-start bounce-end) + (goto-char (point-min)) + (rmail-clear-headers rmail-retry-ignored-headers) + (rmail-clear-headers "^sender:") (goto-char (point-min)) - (end-of-line)))))) + (save-restriction + (search-forward "\n\n") + (forward-line -1) + (narrow-to-region (point-min) (point)) + (setq resending (mail-fetch-field "resent-to")) + (if mail-self-blind + (if resending + (insert "Resent-Bcc: " (user-login-name) "\n") + (insert "BCC: " (user-login-name) "\n")))) + (insert mail-header-separator) + (mail-position-on-field (if resending "Resent-To" "To") t) + (set-buffer mail-buffer) + (rmail-beginning-of-message)))))) (defun rmail-bury () "Bury current Rmail buffer and its summary buffer."