From e64a3841c4188f2823ad66abf59173ae2c4095ce Mon Sep 17 00:00:00 2001 From: Teodor Zlatanov Date: Mon, 12 May 2008 12:40:12 +0000 Subject: [PATCH] Add autoload for `auth-source-user-or-password'. (smtpmail-try-auth-methods): Use it. --- lisp/ChangeLog | 6 ++++++ lisp/mail/smtpmail.el | 34 +++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f91b20804ed..3b4aa51bc3d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-05-12 Teodor Zlatanov + + * mail/smtpmail.el: Add autoload for + `auth-source-user-or-password'. + (smtpmail-try-auth-methods): Use it. + 2008-05-12 Stefan Monnier * emacs-lisp/cl.el (cl-set-nthcdr): Make it a defsubst so that diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 4565cda944c..3a5e8528c5f 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -78,6 +78,9 @@ (autoload 'netrc-get "netrc") (autoload 'password-read "password-cache") +(eval-and-compile + (autoload 'auth-source-user-or-password "auth-source")) + ;;; (defgroup smtpmail nil "SMTP protocol for sending mail." @@ -539,17 +542,26 @@ This is relative to `smtpmail-queue-dir'." (defun smtpmail-try-auth-methods (process supported-extensions host port) (let* ((mechs (cdr-safe (assoc 'auth supported-extensions))) (mech (car (smtpmail-intersection smtpmail-auth-supported mechs))) - (cred (if (stringp smtpmail-auth-credentials) - (let* ((netrc (netrc-parse smtpmail-auth-credentials)) - (port-name (format "%s" (or port "smtp"))) - (hostentry (netrc-machine netrc host port-name - port-name))) - (when hostentry - (list host port - (netrc-get hostentry "login") - (netrc-get hostentry "password")))) - (smtpmail-find-credentials - smtpmail-auth-credentials host port))) + (auth-user (auth-source-user-or-password + "login" host (or port "smtp"))) + (auth-pass (auth-source-user-or-password + "password" host (or port "smtp"))) + (cred (if (and auth-user auth-pass) ; try user-auth-* before netrc-* + (list host port auth-user auth-pass) + ;; else, if auth-source didn't return them... + (if (stringp smtpmail-auth-credentials) + (let* ((netrc (netrc-parse smtpmail-auth-credentials)) + (port-name (format "%s" (or port "smtp"))) + (hostentry (netrc-machine netrc host port-name + port-name))) + (when hostentry + (list host port + (netrc-get hostentry "login") + (netrc-get hostentry "password")))) + ;; else, try smtpmail-find-credentials since + ;; smtpmail-auth-credentials is not a string + (smtpmail-find-credentials + smtpmail-auth-credentials host port)))) (prompt (when cred (format "SMTP password for %s:%s: " (smtpmail-cred-server cred) (smtpmail-cred-port cred)))) -- 2.11.4.GIT