aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-10-27 16:58:44 -0700
committerCarl Worth <cworth@cworth.org>2010-10-27 17:04:48 -0700
commit36dcbdeff6de2612e70fe58bdbc6c5b979b0eafa (patch)
tree840cd377ad6982cb5c28105f9f7c90ff193262b5
parenta3883a7e17171381b8b495ce6efd931c8f420c90 (diff)
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.
-rw-r--r--emacs/notmuch-lib.el18
-rw-r--r--emacs/notmuch-mua.el4
-rwxr-xr-xtest/emacs12
3 files changed, 21 insertions, 13 deletions
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 91132b50..abcbfa1f 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -68,13 +68,25 @@ the user hasn't set this variable with the old or new value."
(match-string 2 long-string)
"unknown")))
-(defun notmuch-database-path ()
- "Return the database.path value from the notmuch configuration."
+(defun notmuch-config-get (item)
+ "Return a value from the notmuch configuration."
;; Trim off the trailing newline
(substring (shell-command-to-string
- (concat notmuch-command " config get database.path"))
+ (concat notmuch-command " config get " item))
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
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 0ad079ff..ddaec676 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -126,6 +126,10 @@ list."
(when (not (string= "" user-agent))
(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
switch-function yank-action send-actions)
(message-sort-headers)
diff --git a/test/emacs b/test/emacs
index dd3acc0e..2db8542a 100755
--- a/test/emacs
+++ b/test/emacs
@@ -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
wait ${smtp_dummy_pid}
-# XXX: Masking away the User-Agent, Date, and Message-ID makes sense,
-# 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,' \
+output=$(sed \
-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
-e s',^Date:.*,Date: XXX,' \
-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
Subject: Testing message sent via SMTP
User-Agent: Notmuch/XXX Emacs/XXX