2000-10-06 14:28:50 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Fri, 6 Oct 2000 17:35:25 +0000 (17:35 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Fri, 6 Oct 2000 17:35:25 +0000 (17:35 +0000)
* message.el (message-alternative-emails): New.
(message-use-alternative-email-as-from): New.
(message-setup): Use them.

lisp/ChangeLog
lisp/message.el

index b8f556a..4d5c8c2 100644 (file)
@@ -1,3 +1,9 @@
+2000-10-06 14:28:50  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-alternative-emails): New.
+       (message-use-alternative-email-as-from): New.
+       (message-setup): Use them.
+
 2000-10-06 13:46:47  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * base64.el, dgnushack.el, gnus-spec.el, messagexmas.el
index 0b27073..f516ada 100644 (file)
@@ -901,6 +901,13 @@ should be sent in several parts. If it is nil, the size is unlimited."
   :type '(choice (const :tag "unlimited" nil)
                 (integer 1000000)))
 
+(defcustom message-alternative-emails nil
+  "A regexp to match the alternative email addresses.
+The first matched address (not primary one) is used in From field."
+  :group 'message-headers
+  :type '(choice (const :tag "Always use primary" nil)
+                regexp))
+
 ;;; Internal variables.
 
 (defvar message-buffer-list nil)
@@ -3578,6 +3585,8 @@ than 988 characters long, and if they are not, trim them until they are."
   (message-insert-signature)
   (save-restriction
     (message-narrow-to-headers)
+    (if message-alternative-emails
+       (message-use-alternative-email-as-from))
     (run-hooks 'message-header-setup-hook))
   (set-buffer-modified-p nil)
   (setq buffer-undo-list nil)
@@ -4501,6 +4510,24 @@ regexp varstr."
     (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook))
       (read-string prompt))))
 
+(defun message-use-alternative-email-as-from ()
+  (require 'mail-utils)
+  (let* ((fields '("To" "Cc")) 
+        (emails
+         (split-string
+          (mail-strip-quoted-names
+           (mapconcat 'message-fetch-reply-field fields ","))
+          "[ \f\t\n\r\v,]+"))
+        email)
+    (while emails
+      (if (string-match message-alternative-emails (car emails))
+         (setq email (car emails)
+               emails nil))
+      (pop emails))
+    (unless (or (not email) (equal email user-mail-address))
+      (goto-char (point-max))
+      (insert "From: " email "\n"))))
+
 (provide 'message)
 
 (run-hooks 'message-load-hook)