mirror of https://github.com/lework/script
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.8 KiB
107 lines
3.8 KiB
9 years ago
|
# coding:utf-8
|
||
|
import requests
|
||
|
import urllib
|
||
|
|
||
|
|
||
|
# 利用139邮箱发短信功能发送免费短信,以达到即使报警信息。
|
||
|
# 短信收费说明:
|
||
|
# 计费周期赠 30 条,超出按 0.1元/条 计费。
|
||
|
# 向联通、电信用户发短信,与本地资费相同,不计入赠送条数。
|
||
|
# 一次可发给10个号码,每天限发250条,每月限发2500条。
|
||
|
# by lework
|
||
|
# 2015年4月12日
|
||
|
|
||
|
def send_sms(cmcc_tel, cmcc_passwd, send_phone, content):
|
||
|
"""
|
||
|
:param cmcc_tel: 139邮箱账号
|
||
|
:param cmcc_passwd: 账号密码
|
||
|
:param send_phone: 发送的手机号
|
||
|
:param content: 发送的内容
|
||
|
:return: 返回('Sent:', '15821******', 'Success')
|
||
|
"""
|
||
|
|
||
|
if not cmcc_tel.strip() or not cmcc_passwd.strip() or not send_phone.strip() or not content.strip():
|
||
|
return 'Error: Parameter error'
|
||
|
if len(content) >= 70:
|
||
|
return 'Error: Exceeded the character limit'
|
||
|
|
||
|
# 登录139邮箱
|
||
|
url = "https://wapmail.10086.cn/index.htm"
|
||
|
headers = {
|
||
|
'Accept': 'text/html,application/xhtml+xml,application/xml;q:0.9,image/webp,*/*;q:0.8',
|
||
|
'Accept-Encoding': 'gzip,deflate,sdch',
|
||
|
'Host': 'wapmail.10086.cn',
|
||
|
'Referer': 'http://wapmail.10086.cn/',
|
||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0'
|
||
|
}
|
||
|
data = {
|
||
|
'ur': cmcc_tel,
|
||
|
'pw': cmcc_passwd
|
||
|
}
|
||
|
cmcc_session = requests.Session()
|
||
|
try:
|
||
|
cmcc_res = cmcc_session.post(url, headers=headers, data=data)
|
||
|
user_sid = cmcc_res.url.split('&')
|
||
|
user_vn = user_sid[2].replace('vn=', '')
|
||
|
user_sid = user_sid[0].split('=')[1]
|
||
|
except:
|
||
|
return 'Error: Login Connection Failed'
|
||
|
|
||
|
if cmcc_res.url == url:
|
||
|
return 'Error: login Failed'
|
||
|
|
||
|
# 发送短信
|
||
|
sms_url = "http://m.mail.10086.cn/ws12/w3/w3smsend"
|
||
|
|
||
|
sms_hearder = {
|
||
|
'Accept': 'text/html,application/xhtml+xml,application/xml;q:0.9,image/webp,*/*;q:0.8',
|
||
|
'Accept-Encoding': 'gzip,deflate,sdch',
|
||
|
'Host': 'm.mail.10086.cn',
|
||
|
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
|
||
|
'Referer': 'http://m.mail.10086.cn/bv12/sendsms.html?&sid=%s&vn=%s&vid=&cmd=40' % (user_sid, user_vn),
|
||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0'
|
||
|
}
|
||
|
sms_data = {
|
||
|
'sid': user_sid,
|
||
|
'vn': user_vn,
|
||
|
'cmd': '2',
|
||
|
'content': content,
|
||
|
'reciever': send_phone
|
||
|
}
|
||
|
try:
|
||
|
sms_send = cmcc_session.post(sms_url, headers=sms_hearder, data=sms_data)
|
||
|
except:
|
||
|
return 'Error: Send Connection Failed'
|
||
|
|
||
|
sms_result = urllib.unquote(sms_send.text)
|
||
|
sms_result = eval(sms_result.replace('null', '"null"').encode('utf-8'))
|
||
|
|
||
|
# 登出139邮箱
|
||
|
logout_url = "http://m.mail.10086.cn/wp12/w3/logout"
|
||
|
logout_data = {
|
||
|
'sid': user_sid,
|
||
|
'vn': user_vn
|
||
|
}
|
||
|
|
||
|
logout_hearder = {
|
||
|
'Accept': 'text/html,application/xhtml+xml,application/xml;q:0.9,image/webp,*/*;q:0.8',
|
||
|
'Accept-Encoding': 'gzip,deflate,sdch',
|
||
|
'Host': 'm.mail.10086.cn',
|
||
|
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
|
||
|
'Referer': 'http://m.mail.10086.cn/bv12/home.html?&sid=%s&vn=%s' % (user_sid, user_vn),
|
||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0'
|
||
|
}
|
||
|
|
||
|
logout_send = cmcc_session.post(logout_url, headers=logout_hearder, data=logout_data)
|
||
|
# 返回代码
|
||
|
if str(sms_result['result']['eroerCode']) == '0':
|
||
|
return 'Sent:', send_phone, 'Success'
|
||
|
else:
|
||
|
return 'Sent:', send_phone, 'Failed'
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
send = send_sms('1871*****', '*********', '158215*****', u'报警信息:警告')
|
||
|
print send
|