python 自动发送短信

今天跟大家分享的主题是利用 python 库 twilio 来免费发送短信。

             先放一张成品图

python 自动发送短信

正文

        眼尖的小伙伴已经发现了上面的短信的前缀显示这个短信来自于一个叫 Twilio 的免费的账户,今天我们用到的库就是 twilio,既然是免费的账户,那么肯定是有一些限制的,这个会在后面提到。

另外要注意的是这个网站从国内访问的时候,可能会因为一些你懂得原因没法访问,那就只好学习一下怎么科学上网了。

1.Twilio

        Twilio 是一个做成开放插件的电话跟踪服务(call-tracking service)。美国当地时间 2016 年 6 月 23 日,云通讯公司 Twilio 在纽约证券交易所上市(来自于百度百科)

python 自动发送短信

2. 安装

        官方文档地址:https://www.twilio.com/docs/libraries/python

        同时官方还提供对以下语言的支持

python 自动发送短信

        可以看到,还是很丰富的。

        最简单的方式就是通过 pip,执行如下命令:

pip install twilio

3. 注册账号

        安装好库以后,就需要到官方的网页上进行注册了。

        进入官网:https://www.twilio.com

python 自动发送短信

        然后进入注册页面

python 自动发送短信

        接着通过了人机认证以后,就会对你的手机号码进行认证,这个就不发图片了。

**4. **进入 console

        注册好了以后,就可以进入我们自己的面板了

python 自动发送短信

        图中框住两个参数是我们代码中需要的, 可以把两个都复制一下;

        既然是发短信,那么肯定是有一个接收者和一个发送者,发送者的号码可不是我们自己刚刚填的号码,而且 twilio 给我们分配的一个号码,因为我是搞好了,直接会显示,如果没有的话,那么就点击 Get Stared。

        现在我们点击 Manage Numbers

python 自动发送短信

        这个时候就可以看到我们的号码了,这是重点,记下来

5. 写代码

        根据文档的内容,我们编写了下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : send_sms.py
# @Software: PyCharm

from  twilio.rest import  Client
# Your Account SID from twilio.com/console
account_sid  =  "your account sid"
# Your Auth Token from twilio.com/console
auth_token   =  "your token"
client  =  Client(account_sid,  auth_token)
message  =  client.messages.create(
# 这里中国的号码前面需要加86
to="+接收者的号码",
from_="+twilio给你的号码 ",
body="Hello from Python!")
print(message.sid)

        然后执行程序,你应该会碰到下面的错误

python 自动发送短信

        可以从报错信息中明显的看到,提示我们说这个号码没有验证,我们可以到验证的网址上验证一下,也可以购买一个高级别的账号来给未验证的号码发送信息。

        而这个就是我一开始提到的免费账号的限制,在这个限制下面如果你想发送信息给一个接收者,这个接收者的号码必须通过验证,语音验证或者短信验证都可以。如果你是想大批量的发那种垃圾信息,那么你不用往下面看了。下面我们就来对号码进行验证。

6. 验证号码

        验证网址:https://www.twilio.com/console/phone-numbers/verified

python 自动发送短信

翻译了一下

7. 重新执行代码

        这个时候重新执行我们的代码,没有报错的话,接收者就应该收到你的消息了,就像我一开始放的成品图一样。

但是,在我们发送的信息前面,有一段前缀,我查了一下官方的文档,说这个免费的账户,这个前缀是去不掉的。。。。。。

8. 查看用量

        在面板中,点击 Usage 即可看到我们的用量, 如下图所示

python 自动发送短信

        可以看到我们的用量以及花费,这个花费是不需要我们真正的付钱的,官方的解释是:

python 自动发送短信

9. 打电话

        打电话的代码也很简单


# Download the Python helper library from twilio.com/docs/python/install
from  twilio.rest import  Client
# Your Account Sid and Auth Token from twilio.com/user/account
account_sid  =  "AC8a9ba33072b6a05f2b81126e3e6609b7"
auth_token  =  "f0150d603c1886d93b9d45ff15d84f24"
client  =  Client(account_sid,  auth_token)
call  =  client.calls.create(
to="+接收者号码",
from_="+你的twilio号码",
url="http://demo.twilio.com/docs/voice.xml",
method="GET",
status_callback="https://www.myapp.com/events",
status_callback_method="POST",
status_callback_event=["initiated",  "ringing",  "answered",  "completed"]
)
print(call.sid)

        执行程序后,电话也可以接通,但是里面的人会提示你升级账号。。。。。

  设计器需要先 下载 twilio 包并放入指定文件夹下,如果不会,可参考 如何调用 Python 第三方库
然后通过全局函数调用如下内容:

from twilio.rest import Client

def send_sms(to,body):
    # Your Account SID from twilio.com/console
    account_sid = "你的sid"
    # Your Auth Token from twilio.com/console
    auth_token = "你的 token"
    client = Client(account_sid, auth_token)
    message = client.messages.create(
        # 这里中国的号码前面需要加86
        to=to,
        from_="+twilio给你的号码 ",
        body=body
        )
    print(message.sid)

    就可以实现自定义配置接收者与信息内容了,但是有一点必须注意,接收者必须是已经验证过的

总结

        好了,到这里我们就可以免费的发送短信了。

        通过这个库,我们可以 对线上或者线下后台跑的程序进行监控,并及时发送短信报警