On Sat 06 Jan 2018 at 05:32, John Wiegley wrote: >>>>>> "CC" == Cesar Crusius writes: > > CC> I recently had to add XOAUTH2 support in smtpmail to access my two-factor > CC> authenticated Gmail account, which turned out to be surprisingly simple > CC> (my hack has about 20 lines of code, I guess it would about double to do > CC> it properly). > > CC> It uses oauth2.el, so my plan would be to make smtpmail load that library > CC> on demand, in case the new smtpmail-xoauth2 variables are configured. I > CC> guess the required functionality could be copy-and-pasted, but that seems > CC> a waste. > > CC> Is there any interest in a patch? > > This sounds useful to me. How will users know to enable the extra behavior? Now that I made the hack "proper," I think I may take another route here. SMTP XOAuth2, basically a Gmail-only thing, probably does not belong in the Emacs main repository. Instead, 1. All that needs to happen in smtpmail.el is for the 'smtpmail-try-auth-methods' to have the following patch: diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 20cbeb5f4e..a33a552cd0 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -547,6 +551,13 @@ The list is in preference order.") (not password)) ;; No mechanism, or no credentials. mech) + ((eq mech 'xoauth2) + (smtpmail-command-or-throw + process + (concat "AUTH XOAUTH2 " + (base64-encode-string + (concat "user=" user "\1auth=Bearer " password "\1\1") t)) + 235)) ((eq mech 'cram-md5) (setq ret (smtpmail-command-or-throw process "AUTH CRAM-MD5")) (when (eq (car ret) 334) 2. I can create a MELPA package 'auth-source-xoauth2.el' that can then be transparently used to provide the XOAuth2 "password" when required. smtpmail.el should /not/ include xoauth2 in the supported auth methods by default, as the configuration is non-trivial, and it would likely immediately break all Gmail configurations using application passwords. -- Cesar Crusius