async def auth_plain(
        self, username: str, password: str, timeout: DefaultNumType = _default
    ) -> SMTPResponse:
        """
        PLAIN auth encodes the username and password in one Base64 encoded
        string. No verification message is required.

        Example::

            220-esmtp.example.com
            AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz
            235 ok, go ahead (#2.0.0)

        """
        username_bytes = username.encode("ascii")
        password_bytes = password.encode("ascii")
        username_and_password = b"\0" + username_bytes + b"\0" + password_bytes
        encoded = base64.b64encode(username_and_password)

        async with self._command_lock:
            response = await self.execute_command(
                b"AUTH", b"PLAIN", encoded, timeout=timeout
            )

        if response.code != SMTPStatus.auth_successful:
            raise SMTPAuthenticationError(response.code, response.message)

        return response
async def auth_plain ( self , username : str , password : str , timeout : DefaultNumType = _default ) -> SMTPResponse : username_bytes = username . encode ( "ascii" ) password_bytes = password . encode ( "ascii" ) username_and_password = b"\0" + username_bytes + b"\0" + password_bytes encoded = base64 . b64encode ( username_and_password ) async with self . _command_lock : response = await self . execute_command ( b"AUTH" , b"PLAIN" , encoded , timeout = timeout ) if response . code != SMTPStatus . auth_successful : raise SMTPAuthenticationError ( response . code , response . message ) return response
PLAIN auth encodes the username and password in one Base64 encoded
        string. No verification message is required.

        Example::

            220-esmtp.example.com
            AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz
            235 ok, go ahead (#2.0.0)