code: 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
docs: 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)