Example #1
0
    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)
Example #2
0
 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
Example #3
0
    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)
Example #4
0
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    
Example #5
0
 def encode_plain(user, password):
     return encode_base64('\0%s\0%s' % (user, password), eol='')
Example #6
0
 def encode_cram_md5(challenge, user, password):
     challenge = base64.decodestring(challenge)
     response = user + ' ' + hmac.HMAC(password, challenge).hexdigest()
     return encode_base64(response, eol='')
Example #7
0
 def encode_plain(user, password):
     return encode_base64('\0%s\0%s' % (user, password), eol='')
Example #8
0
 def encode_cram_md5(challenge, user, password):
     challenge = base64.decodestring(challenge)
     response = user + ' ' + hmac.HMAC(password, challenge).hexdigest()
     return encode_base64(response, eol='')