def login(self, user, password): def encode_cram_md5(challenge, user, password): challenge = base64.decodestring(challenge) response = user + ' ' + hmac.HMAC(password, challenge).hexdigest() return encode_base64(response, eol='') def encode_plain(user, password): return encode_base64('\0%s\0%s' % (user, password), eol='') AUTH_LOGIN = '******' if self.helo_resp is None and self.ehlo_resp is None: if not (200 <= self.ehlo()[0] <= 299): (code, resp) = self.helo() if not (200 <= self.code <= 299): raise SMTPHeloError(code, resp) (code, resp) = self.docmd( 'AUTH', '%s %s' % (AUTH_LOGIN, encode_base64(user, eol=''))) if code != 334: raise SMTPAuthenticationError(code, resp) (code, resp) = self.docmd(encode_base64(password, eol='')) if code not in (235, 503): raise SMTPAuthenticationError(code, resp) return (code, resp)
def get_smtp_client(self): server=smtplib.SMTP(self.smtpServer) if len(self.user)!=0 and len(self.passwd)!=0: #这里需要处理 标识 完整的 客户端 server.ehlo() server.starttls() server.ehlo() try: server.login(self.user, self.passwd) except SMTPAuthenticationError: sys.stdout.write('\n------- try Auth Login again ------\n') server = smtplib.SMTP(self.smtpServer) debuglevel = '1' if debuglevel: server.set_debuglevel(True) server.ehlo() (code, resp) = server.docmd('AUTH LOGIN') if code != 334: raise SMTPAuthenticationError(code, resp) (code, resp) = server.docmd(encode_base64(self.user, eol="")) if code != 334:#503:#334: raise SMTPAuthenticationError(code, resp) (code, resp) = server.docmd(encode_base64(self.passwd, eol="")) if code != 235: raise SMTPAuthenticationError(code, resp) return server
def login(self, user, password): def encode_cram_md5(challenge, user, password): challenge = base64.decodestring(challenge) response = user + ' ' + hmac.HMAC(password, challenge).hexdigest() return encode_base64(response, eol='') def encode_plain(user, password): return encode_base64('\0%s\0%s' % (user, password), eol='') AUTH_LOGIN = '******' if self.helo_resp is None and self.ehlo_resp is None: if not (200 <= self.ehlo()[0] <= 299): (code, resp) = self.helo() if not (200 <= self.code <= 299): raise SMTPHeloError(code, resp) (code, resp) = self.docmd('AUTH', '%s %s' % (AUTH_LOGIN, encode_base64(user, eol=''))) if code != 334: raise SMTPAuthenticationError(code, resp) (code, resp) = self.docmd(encode_base64(password, eol='')) if code not in (235, 503): raise SMTPAuthenticationError(code, resp) return (code, resp)
def get_smtp_client(stor): host = stor['host'] port = stor['port'] user = stor['user'] passwd = stor['pass'] debuglevel = stor['debuglevel'] login = stor['login'] starttls = stor['starttls'] s = SMTP(host, port) if debuglevel: s.set_debuglevel(True) if starttls and login: s.ehlo() s.starttls() s.ehlo() s.login(user, passwd) elif login: try: s.login(user, passwd) except SMTPAuthenticationError: sys.stdout.write('\n------- try Auth Login again ------\n') s = SMTP(host, port) if debuglevel: s.set_debuglevel(True) s.ehlo() (code, resp) = s.docmd('AUTH LOGIN') if code != 334: raise SMTPAuthenticationError(code, resp) (code, resp) = s.docmd(encode_base64(user, eol="")) if code != 334: raise SMTPAuthenticationError(code, resp) (code, resp) = s.docmd(encode_base64(passwd, eol="")) if code != 235: raise SMTPAuthenticationError(code, resp) return s
def encode_plain(user, password): return encode_base64('\0%s\0%s' % (user, password), eol='')
def encode_cram_md5(challenge, user, password): challenge = base64.decodestring(challenge) response = user + ' ' + hmac.HMAC(password, challenge).hexdigest() return encode_base64(response, eol='')