X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/538b98473f4cd7d7e3d0f56287bb11d167c24c8b..6e66e4c6fc350fe8cb85d4cc35d9ca567df56548:/lisp/mail/sendmail.el diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 049132dc6e..e4da1dcddb 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -43,12 +43,29 @@ If `parens', they look like: king@grassland.com (Elvis Parsley) If `angles', they look like: Elvis Parsley -If `system-default', Rmail allows the system to insert its default From field." +If `system-default', allows the mailer to insert its default From field +derived from the envelope-from address. + +In old versions of Emacs, the `system-default' setting also caused +Emacs to pass the proper email address from `user-mail-address' +to the mailer to specify the envelope-from address. But that is now +controlled by a separate variable, `mail-specify-envelope-from'." :type '(choice (const nil) (const parens) (const angles) (const system-default)) :version "20.3" :group 'sendmail) +;;;###autoload +(defcustom mail-specify-envelope-from t + "*If non-nil, specify the envelope-from address when sending mail. +The value used to specify it is whatever is found in `user-mail-address'. + +On most systems, specifying the envelope-from address +is a privileged operation." + :version "21.1" + :type 'boolean + :group 'sendmail) + ;;;###autoload (defcustom mail-self-blind nil "\ *Non-nil means insert BCC to self in messages to be sent. @@ -453,7 +470,7 @@ Here are commands that move to a header field (and create it if there isn't): ;; Lines containing just >= 3 dashes, perhaps after whitespace, ;; are also sometimes used and should be separators. (setq paragraph-start (concat (regexp-quote mail-header-separator) - "$\\|[ \t]*\\([-|#;>*]+ *\\|(?[0-9]+[.)] *\\)*$" + "$\\|\t*\\([-|#;>* ]\\|(?[0-9]+[.)]\\)+$" "\\|[ \t]*[a-z0-9A-Z]*>+[ \t]*$\\|[ \t]*$\\|" "-- $\\|---+$\\|" page-delimiter)) @@ -716,7 +733,7 @@ the user from the mailer." This has higher priority than `default-buffer-file-coding-system' and `default-sendmail-coding-system', but lower priority than the local value of `buffer-file-coding-system'. -See also the function `select-sendmail-coding-system'.") +See also the function `select-message-coding-system'.") ;;;###autoload (defvar default-sendmail-coding-system 'iso-latin-1 @@ -727,7 +744,7 @@ This variable is set/changed by the command set-language-environment. User should not set this variable manually, instead use sendmail-coding-system to get a constant encoding of outgoing mails regardless of the current language environment. -See also the function `select-sendmail-coding-system'.") +See also the function `select-message-coding-system'.") (defun sendmail-send-it () (require 'mail-utils) @@ -860,7 +877,7 @@ See also the function `select-sendmail-coding-system'.") (insert "From: " login "\n")) ((eq mail-from-style 'system-default) nil) - (t (error "Invalid value for `system-default'"))))) + (t (error "Invalid value for `mail-from-style'"))))) ;; Insert an extra newline if we need it to work around ;; Sun's bug that swallows newlines. (goto-char (1+ delimline)) @@ -889,11 +906,8 @@ See also the function `select-sendmail-coding-system'.") sendmail-program "/usr/lib/sendmail") nil errbuf nil "-oi") - ;; Always specify who from, - ;; since some systems have broken sendmails. - ;; unless user has said no. - (if (memq mail-from-style '(angles parens nil)) - (list "-f" user-mail-address)) + (and mail-specify-envelope-from + (list "-f" user-mail-address)) ;;; ;; Don't say "from root" if running under su. ;;; (and (equal (user-real-login-name) "root") ;;; (list "-f" (user-login-name))) @@ -1058,7 +1072,7 @@ See also the function `select-sendmail-coding-system'.") (interactive) (save-excursion ;; put a marker at the end of the header - (let ((end (make-marker (mail-header-end))) + (let ((end (copy-marker (mail-header-end))) (case-fold-search t) to-line) (goto-char (point-min)) @@ -1204,7 +1218,8 @@ and don't delete any header fields." ;; delete that window to save screen space. ;; t means don't alter other frames. (delete-windows-on original t) - (insert-buffer original)) + (insert-buffer original) + (set-text-properties (point) (mark t) nil)) (if (consp arg) nil (goto-char start) @@ -1265,6 +1280,9 @@ and don't delete any header fields." (interactive "P") (and (consp mail-reply-action) (eq (car mail-reply-action) 'insert-buffer) + (with-current-buffer (nth 1 mail-reply-action) + (or (mark t) + (error "No mark set: %S" (current-buffer)))) (let ((buffer (nth 1 mail-reply-action)) (start (point)) ;; Avoid error in Transient Mark mode