2

Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

 1 year ago
source link: https://v3u.cn/a_id_152
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

首页 - Python/2020-05-25
Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

    短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务分别来体验一下国际短信和国内短信接口。

    首先,注册Twilio: https://www.twilio.com/

    注册成功后,获取ACCOUNT SID和AUTH TOKEN,一会要用到

    

20200525160514_75149.png

    安装依赖的库

pip3 install twilio

    随后编写发送脚本

#导包 导入客户端
from twilio.rest import Client

#定义短信sid
account_sid = '你的sid'
#定义秘钥
auth_token = '你的秘钥'

#定义客户端对象
client = Client(account_sid,auth_token)


message = client.messages.create(
to="+8613423432818", # 接受短信的手机号,也就是注册界面验证过的那个自己的手机号,注意 写中国区号 +86
from_="+12118627871", # 发送短信的美国手机号 区号 +1
body="Hello from Python!")


#打印发送结果
print(message)

    整个过程比较简单,如此你就拥有了一个免费的国际手机短信服务接口,注意发送的手机号要填写手机号的国家区号,另外twilio的额度也并非无限,将会有一个10刀的额度,每发一条将会扣除1美分,所以测试的时候悠着点,别超过额度限制。

    国内短信业务这块儿做的比较好的有阿里云,腾讯云,和百度云,另外七牛云和又拍云也有相应的服务,为什么一定要选择腾讯云呢?其实很简单,因为有免费的100条短信可以用。

    首先注册腾讯云服务:https://cloud.tencent.com

    注册成功后,腾讯云会自动生成一个短信应用,如果没有默认应用,需要新建一下

20200525160547_33761.png

    记录一下应用的 appid 以及 appkey 一会要用到

    之后配置短信的签名,签名顾名思义,用来限制短信接口的权限,防止被恶意调用,同时签名需要腾讯客服人工审核,大概需要两个小时左右。

20200525160526_58223.png

    这里推荐使用小程序来做签名类型,同时签名内容是自定义的,证明类型很简单,只需要去微信小程序后台界面截个图即可。

    配置好签名,还需要配置一下短信模板,模板的含义也很简单,就是给用户发送的短信内容

20200525160517_52397.png

    模板中的{}符号是类似通配符的东西,发送短信时用变量进行替换,注意表明索引数量,模板也需要腾讯客服人工审核,大概需要两个小时左右。另外短信长度最好不要超过70字,超过以后长短信就会按每67字一条来计算,那就亏大发了。

    以上就是前期的配置,下面安装腾讯云短信的sdk

pip3 install qcloudsms_py

    编写发送脚本

# 短信应用SDK AppID
appid = 你的appid # SDK AppID是1400开头

# 短信应用SDK AppKey
appkey = "你的appkey"

# 需要发送短信的手机号码
phone_numbers = ["你要发送的手机号"]

# 短信模板ID,需要在短信应用中申请
template_id = 在模板列表里获取

# 签名
sms_sign = "刘悦的技术博客"

from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError


import ssl
ssl._create_default_https_context = ssl._create_unverified_context

ssender = SmsSingleSender(appid, appkey)
params = ["6666","5"] # 当模板没有参数时,`params = []`
try:
result = ssender.send_with_param(86, phone_numbers[0],
template_id, params, sign=sms_sign, extend="", ext="") # 签名参数不允许为空串
print(result)
except HTTPError as e:
print(e)
except Exception as e:
print(e)

    整个流程没什么难度,需要注意一点这里为了避免ssl证书的问题需要导入ssl库单独设置一下,最后查看一下结果

20200525170517_28113.jpeg

    同时腾讯云服务短信比Twilio体验好的一点在于它具有详细的统计后台,方便我们对短信到达率进行监控和统计,对海量用户的群发也比较友好。

20200525170549_37345.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK