Esempio n. 1
0
    def get_account_status(self):
        phrase = "SelSum.aspx"
        count = self._call_api(phrase)

        # 判断返回结果
        if int(count) < 0:
            err_desc = {
                '-1': 'account invalid',
                '-2': 'unknown error',
                '-3': 'password invalid'
            }
            outerror("%s: %s" % (count, err_desc[count]))
            return False
        return count, None
Esempio n. 2
0
    def _call_api(self, phrase):
        # 取得接口信息
        url = "%s?%s&username=%s&password=%s" % (
            self.api_base_url, phrase, self.api_username, self.api_password)
        f = urllib2.urlopen(url)
        raw = f.read()
        f.close()
        raw = raw.decode('gbk').encode('utf8', 'ignore')
        raw = raw.replace('encoding="gb2312"', 'encoding="utf-8"')

        # 解析XML
        import PubXML as XMLObject
        data = XMLObject.parse_xml_string(raw)

        # 判断是否出错
        if data['errorcode'] != '0':
            outerror("remote error[%s]: %s" %
                     (data['errorcode'], data['errordescription']))
            return False

        return data
Esempio n. 3
0
    def get_account_status(self):
        phrase = "sms_ye.php?userid=%s" % self.api_userid
        result = self._call_api(phrase)

        # 分解返回数据
        (status, value) = result.split(':')
        status = status.strip()
        value = value.strip()

        # 返回余额
        if status == 'success':
            balance = '%.2f RMB' % float(value)
            return balance, None

        # 错误处理
        if status == 'error':
            outerror('%s: %s' % (value, self.err_desc[value]))
            return False

        # 其它情况处理
        outerror('unknown error (%s)' % result)
        return False
Esempio n. 4
0
    def send_email(self, host, port, sender, password, receiver, subject,
                   message):
        try:
            message = self.set_message(sender, receiver, subject, message)
            s = smtplib.SMTP(host, port)

            code, msg = s.login(sender, password)
            if not (200 <= code <= 299):
                return code, msg

            s.sendmail(sender, receiver, message)
            s.quit()
            return 250, 'ok'
        except smtplib.SMTPResponseException as e:
            code, msg = e.smtp_code, e.smtp_error
            return code, msg
        except smtplib.SMTPRecipientsRefused as e:
            senderrs = e.recipients
            code, msg = senderrs[receiver]
            return code, msg
        except BaseException as e:
            outerror(u'send: exception')
            code, msg = -1, repr(e)
            return code, msg