summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/mail/sendmail.el68
-rw-r--r--lisp/mail/smtpmail.el10
3 files changed, 52 insertions, 34 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 74b36f4ab05..35337de3fa4 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2011-07-08 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mail/sendmail.el (sendmail-query-once): If we aren't allowed to
+ save customizations (with "emacs -Q"), just set the variable
+ instead of erroring out.
+
+ * mail/smtpmail.el (smtpmail-query-smtp-server): Ditto.
+
2011-07-08 Juri Linkov <juri@jurta.org>
* arc-mode.el (archive-zip-expunge, archive-zip-update)
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 6480d6a393f..b14c7e50137 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -168,44 +168,48 @@ This is used by the default mail-sending commands. See also
(defvar sendmail-query-once-function 'query
"Either a function to send email, or the symbol `query'.")
+(autoload 'custom-file "cus-edit")
+
;;;###autoload
(defun sendmail-query-once ()
"Send an email via `sendmail-query-once-function'.
If `sendmail-query-once-function' is `query', ask the user what
function to use, and then save that choice."
(when (equal sendmail-query-once-function 'query)
- (let ((default
- (cond
- ((or (and window-system (eq system-type 'darwin))
- (eq system-type 'windows-nt))
- 'mailclient-send-it)
- ((and sendmail-program
- (executable-find sendmail-program))
- 'sendmail-send-it))))
- (customize-save-variable
- 'sendmail-query-once-function
- (if (or (not default)
- ;; We have detected no OS-level mail senders, or we
- ;; have already configured smtpmail, so we use the
- ;; internal SMTP service.
- (and (boundp 'smtpmail-smtp-server)
- smtpmail-smtp-server))
- 'smtpmail-send-it
- ;; Query the user.
- (unwind-protect
- (progn
- (pop-to-buffer "*Mail Help*")
- (erase-buffer)
- (insert "Sending mail from Emacs hasn't been set up yet.\n\n"
- "Type `y' to configure outgoing SMTP, or `n' to use\n"
- "the default mail sender on your system.\n\n"
- "To change this again at a later date, customize the\n"
- "`send-mail-function' variable.\n")
- (goto-char (point-min))
- (if (y-or-n-p "Configure outgoing SMTP in Emacs? ")
- 'smtpmail-send-it
- default))
- (kill-buffer (current-buffer)))))))
+ (let* ((default
+ (cond
+ ((or (and window-system (eq system-type 'darwin))
+ (eq system-type 'windows-nt))
+ 'mailclient-send-it)
+ ((and sendmail-program
+ (executable-find sendmail-program))
+ 'sendmail-send-it)))
+ (function
+ (if (or (not default)
+ ;; We have detected no OS-level mail senders, or we
+ ;; have already configured smtpmail, so we use the
+ ;; internal SMTP service.
+ (and (boundp 'smtpmail-smtp-server)
+ smtpmail-smtp-server))
+ 'smtpmail-send-it
+ ;; Query the user.
+ (unwind-protect
+ (progn
+ (pop-to-buffer "*Mail Help*")
+ (erase-buffer)
+ (insert "Sending mail from Emacs hasn't been set up yet.\n\n"
+ "Type `y' to configure outgoing SMTP, or `n' to use\n"
+ "the default mail sender on your system.\n\n"
+ "To change this again at a later date, customize the\n"
+ "`send-mail-function' variable.\n")
+ (goto-char (point-min))
+ (if (y-or-n-p "Configure outgoing SMTP in Emacs? ")
+ 'smtpmail-send-it
+ default))
+ (kill-buffer (current-buffer))))))
+ (if (ignore-errors (custom-file))
+ (customize-save-variable 'sendmail-query-once-function function)
+ (setq sendmail-query-once-function function))))
(funcall sendmail-query-once-function))
;;;###autoload(custom-initialize-delay 'send-mail-function nil)
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 073e2fa4a3c..57356f3315b 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -587,6 +587,8 @@ The list is in preference order.")
(defun smtpmail-response-text (response)
(mapconcat 'identity (cdr response) "\n"))
+(autoload 'custom-file "cus-edit")
+
(defun smtpmail-query-smtp-server ()
(let ((server (read-string "Outgoing SMTP mail server: "))
(ports '(587 "smtp"))
@@ -598,8 +600,12 @@ The list is in preference order.")
(setq port (pop ports)))
(when (setq stream (ignore-errors
(open-network-stream "smtp" nil server port)))
- (customize-save-variable 'smtpmail-smtp-server server)
- (customize-save-variable 'smtpmail-smtp-service port)
+ (if (ignore-errors (custom-file))
+ (progn
+ (customize-save-variable 'smtpmail-smtp-server server)
+ (customize-save-variable 'smtpmail-smtp-service port))
+ (setq smtpmail-smtp-server server
+ smtpmail-smtp-service port))
(delete-process stream)))
(unless smtpmail-smtp-server
(error "Couldn't contact an SMTP server"))))