]> code.delx.au - gnu-emacs/blobdiff - lisp/mail/sendmail.el
(mail-extr-all-letters-but-separators)
[gnu-emacs] / lisp / mail / sendmail.el
index 049132dc6e49306d151b93b92b8b10d0c25da671..e4da1dcddb4f6e8ed8b60ab27b2c8a68923b1b05 100644 (file)
@@ -43,12 +43,29 @@ If `parens', they look like:
        king@grassland.com (Elvis Parsley)
 If `angles', they look like:
        Elvis Parsley <king@grassland.com>
-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