SMTP.auth(mechanism, authobject, *, initial_response_ok=True)
Issue an SMTP
AUTH
command for the specified authentication mechanism, and handle the challenge response via authobject.
mechanism specifies which authentication mechanism is to be used as argument to the AUTH
command; the valid values are those listed in the auth
element of esmtp_features
.
authobject must be a callable object taking an optional single argument:
data = authobject(challenge=None)
If optional keyword argument initial_response_ok is true, authobject()
will be called first with no argument. It can return the RFC 4954 “initial response” bytes which will be encoded and sent with the AUTH
command as below. If the authobject()
does not support an initial response (e.g. because it requires a challenge), it should return None when called with challenge=None
. If initial_response_ok is false, then authobject()
will not be called first with None.
If the initial response check returns None, or if initial_response_ok is false, authobject()
will be called to process the server’s challenge response; the challenge argument it is passed will be a bytes
. It should return bytes
data that will be base64 encoded and sent to the server.
The SMTP
class provides authobjects
for the CRAM-MD5
, PLAIN
, and LOGIN
mechanisms; they are named SMTP.auth_cram_md5
, SMTP.auth_plain
, and SMTP.auth_login
respectively. They all require that the user
and password
properties of the SMTP
instance are set to appropriate values.
User code does not normally need to call auth
directly, but can instead call the login()
method, which will try each of the above mechanisms in turn, in the order listed. auth
is exposed to facilitate the implementation of authentication methods not (or not yet) supported directly by smtplib
.
New in version 3.5.
Please login to continue.