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: ,' < sent_message) -test_expect_equal "$output" "From: XXX +test_expect_equal "$output" "From: Notmuch Test Suite To: user@example.com Subject: Testing message sent via SMTP User-Agent: Notmuch/XXX Emacs/XXX