1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Add autoload for

`auth-source-user-or-password'.
(smtpmail-try-auth-methods): Use it.
This commit is contained in:
Teodor Zlatanov 2008-05-12 12:40:12 +00:00
parent 97d1c23634
commit e64a3841c4
2 changed files with 29 additions and 11 deletions

View file

@ -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))))