您的位置:首页 > 编程语言 > Python开发

Python调用飞信接口发送短信

2013-09-18 09:53 543 查看
主要参考了两篇文章:(对原作者表示感谢~)

发送飞信的Python脚本:http://www.cnblogs.com/fatway/archive/2009/08/07/1693813.html

中国移动飞信发送接口(Fetion API):http://blog.quanhz.com/archives/273

2013年9月18日亲测可用。

下面是代码:【使用前将账号密码换为自己的】

# -*- coding:utf-8 -*-
# file: SendFetion.py
# by Lee 2013-9-18
"""-----------------------------------------------------------------------------
使用HTTPS调用飞信接口: https://quanapi.sinaapp.com/fetion.php?u=飞信登录手机号&p=飞信登录密码&to=接收飞信的手机号&m=飞信内容 返回结果为Json格式,result=0时表示发送成功
{“result”:0,”message”:”\u53d1\u9001\u6210\u529f”}
-----------------------------------------------------------------------------"""
import sys
import httplib
import urllib
import re
import time
import json

class Fetion:
"""
model to call fetionapi.
attribute:url, fromTel, pwd, toTel, msg
function:Trans, format_url, SendMsg
"""
url = "https://quanapi.sinaapp.com/fetion.php?u="
def __init__(self,
toTel,
msg,
fromTel = '151xxxxxxxx',  # default my phone
pwd = 'pxxxxxxxx'):
self.fromTel = fromTel
self.pwd = pwd
self.toTel = toTel
self.msg = self.Trans(msg)
def Trans(self, msg):
# change space to '%20', otherwise error raised
return re.sub(" ", "%20", str(msg))
def format_url(self):
url_address = self.url + self.fromTel \
+ "&p=" + self.pwd \
+ "&to=" + self.toTel \
+ "&m=" + self.msg
return url_address
def SendMsg(self):
# call the api by http get method
return urllib.urlopen(self.format_url())
def msg2log(msg):
logfile = open('MyFetion.log', 'a')
now = time.strftime('%Y%m%d %H:%M:%S')
logfile.write('\n'+ now + '\n' + msg + '\n')
logfile.close()

def main():
# format mutual message
print "\n" + " "*10 + "*"*60
print " "*10 + " Personal Fetion"
print " "*10 + " Enter the number and message what you want to send to."
print " "*10 + " blank number means yourself,"
print " "*10 + " and a blank message line to exit."
print " "*10 + "*"*60
# get the destination phone number
toTel = raw_input("Input the target telphone number:")
if toTel == "":
toTel = "151xxxxxxxx"  # none input for a target most used
# get the message and send by Fetion class
while True:
msg = raw_input("Message:")
if msg == "":
break  # none input to quit
else:
print "Sending...."
msg2log(msg)
ff = Fetion(toTel, msg)
answer = ff.SendMsg()
data = answer.read()
jdata=json.loads(data)
if jdata['result']==0:
print 'Done.^_^\n'
else:
print 'Fail.-_=\n'
if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: