写下这篇文章,算是记录一下Python发送手机短信的过程。现在通过手机短信推送信息一般比较方便,在企业内部,一般用邮件推送通知,如果不是每个人都有邮箱的话,邮件推送的局限性就出来了。手机短信的实时性比较好,可以快速批量的发送给大量用户。这里我使用的短信平台是融合云信的,参考了一下官方文档,里面只有接口的说明,没有Python版的发送示例,在这里就整理一下吧。
大致的脚本发送手机短信的步骤分为如下:
1. 准备短信平台,配置签名和模板,
2. 熟悉短信接口,融合云信采用的是发送HTTPPOST请求,编码格式“UTF-8”
接口请求参数:
字段名 | 字段类型 | 是否必须 | 说明 |
cpcode | String | 必须 | 渠道在融合云信平台申请的cpcode 登录自服务平台,商户信息页面中的【商户编码】 |
msg | String | 必须 | 模板参数值,如果包含多个参数,以半角英文逗号分隔 |
mobiles | String | 必须 | 11位手机号,如果包含多个手机号,请用半角英文逗号分隔,最多支持300个手机号 |
excode | String | 必须 | 渠道自定义接入号的扩展码,可为空;为空时传空字符串”” |
templetid | String | 必须 | 渠道在融合云信平台申请的模板短信ID |
sign | String | 必须 | MD5签名,签名字符串为cpcode+ msg+mobiles+excode+templetid+key,其中key为融合云信平台分配的私钥,将签名字符串用MD5加密后转换为小写字符串。 fabb84960500d01c2d6ce00452d4ae0b |
接口提供者:融合云信
接口地址:https://rcsapi.wo.cn:8043/umcinterface/sendtempletmsg
接口调用者:商户
Content-Type:application/json
数据举例:
{"cpcode":"XXXXXX","msg":"183001,2,10010","mobiles":"18607714703,18648807841","excode":"00000","templetid":"2","sign":"20e90defeea6ea29e643bdd8a80b18e0"}
3. 代码阶段,脚本中最关键的是两点,一是MD5转换,二是Python发送HTTP POST。
完整发送代码如下:
import requests
cpcode="******" //在平台上可以找到
msg="第二次测试"
mobiles="135********"
excode="00000"
templetid="2855836" //模板对应的编号
key="fabb84960500d01c2d6ce00452*****" //Key在平台上可以找到
def Convert_MD5(str): //按照文档要求进行MD5转换
import hashlib
m=hashlib.md5()
m.update(str.encode("utf8"))
returnm.hexdigest()
sign=Convert_MD5(cpcode+msg+mobiles+excode+templetid+key) //按照要求MD5转换
smsapi=https://rcsapi.wo.cn:8043/umcinterface/sendtempletmsg//接口地址
params={
"cpcode":cpcode,
"msg":msg,
"mobiles":mobiles,
"excode":excode,
"templetid":templetid,
"sign":sign
}
headers = {
'X-Lemonban-Media-Type': 'lemonban.v2'
}
response=requests.post(url=smsapi,json=params,headers=headers) //发送请求
print(response) //输入返回结果
print(response.text)
给需要的同行朋友参考参考。