emacs: Explicitly set the From address when composing a new message.

Previously, underlying emacs code was setting this header. Now, we do the
right thing and query the notmuch configuration for the default value here.
This commit is contained in:
Carl Worth 2010-10-27 16:58:44 -07:00
parent a3883a7e17
commit 36dcbdeff6
3 changed files with 21 additions and 13 deletions

View file

@ -68,13 +68,25 @@ the user hasn't set this variable with the old or new value."
(match-string 2 long-string) (match-string 2 long-string)
"unknown"))) "unknown")))
(defun notmuch-database-path () (defun notmuch-config-get (item)
"Return the database.path value from the notmuch configuration." "Return a value from the notmuch configuration."
;; Trim off the trailing newline ;; Trim off the trailing newline
(substring (shell-command-to-string (substring (shell-command-to-string
(concat notmuch-command " config get database.path")) (concat notmuch-command " config get " item))
0 -1)) 0 -1))
(defun notmuch-database-path ()
"Return the database.path value from the notmuch configuration."
(notmuch-config-get "database.path"))
(defun notmuch-user-name ()
"Return the user.name value from the notmuch configuration."
(notmuch-config-get "user.name"))
(defun notmuch-user-primary-email ()
"Return the user.primary_email value from the notmuch configuration."
(notmuch-config-get "user.primary_email"))
;; ;;
;; XXX: This should be a generic function in emacs somewhere, not ;; XXX: This should be a generic function in emacs somewhere, not

View file

@ -126,6 +126,10 @@ list."
(when (not (string= "" user-agent)) (when (not (string= "" user-agent))
(push (cons "User-Agent" user-agent) other-headers)))) (push (cons "User-Agent" user-agent) other-headers))))
(unless (assoc "From" other-headers)
(push (cons "From" (concat
(notmuch-user-name) " <" (notmuch-user-primary-email) ">")) other-headers))
(message-mail to subject other-headers continue (message-mail to subject other-headers continue
switch-function yank-action send-actions) switch-function yank-action send-actions)
(message-sort-headers) (message-sort-headers)

View file

@ -68,19 +68,11 @@ smtp_dummy_pid=$!
test_emacs "(setq message-send-mail-function 'message-smtpmail-send-it) (setq smtpmail-smtp-server \"localhost\") (setq smtpmail-smtp-service \"25025\") (notmuch-hello) (notmuch-mua-mail) (message-goto-to) (insert \"user@example.com\") (message-goto-subject) (insert \"Testing message sent via SMTP\") (message-goto-body) (insert \"This is a test that messages are sent via SMTP\") (message-send-and-exit)" >/dev/null 2>&1 test_emacs "(setq message-send-mail-function 'message-smtpmail-send-it) (setq smtpmail-smtp-server \"localhost\") (setq smtpmail-smtp-service \"25025\") (notmuch-hello) (notmuch-mua-mail) (message-goto-to) (insert \"user@example.com\") (message-goto-subject) (insert \"Testing message sent via SMTP\") (message-goto-body) (insert \"This is a test that messages are sent via SMTP\") (message-send-and-exit)" >/dev/null 2>&1
wait ${smtp_dummy_pid} wait ${smtp_dummy_pid}
# XXX: Masking away the User-Agent, Date, and Message-ID makes sense, output=$(sed \
# since these fields are inherently unpredictable. But doing the same
# thing with the From address is cheating. What should really be
# happening here is that the emacs interface should be using something
# like "notmuch compose" to construct the initial message and it
# should be getting the user's name and email address from the notmuch
# configuration file.
output=$(sed -e 's,^From: .*,From: XXX,' \
-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \ -e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
-e s',^Date:.*,Date: XXX,' \ -e s',^Date:.*,Date: XXX,' \
-e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message) -e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message)
test_expect_equal "$output" "From: XXX test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: user@example.com To: user@example.com
Subject: Testing message sent via SMTP Subject: Testing message sent via SMTP
User-Agent: Notmuch/XXX Emacs/XXX User-Agent: Notmuch/XXX Emacs/XXX