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
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
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
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