最常用你的程序发短信的人可能就是你。当你远离计算机时,短信是通知你自
己的好方式。如果你已经用程序自动化了一个无聊的任务,它需要运行几小时,你可以在它完成时,让它用短信通知你。或者可以定期运行某个程序,它有时需要与你联系,例如天气检查程序,用短信提醒你带伞。
举一个简单的例子,下面是一个 Python 小程序,包含了 textmyself()函数,它将传入的字符串参数作为短信发出。打开一个新的文件编辑器窗口,输入以下代码,用自己的信息替换帐户
SID,认证标志和电话号码。将它保存为 textMyself.py。
#! python3
# textMyself.py - Defines the textmyself() function that texts a message # passed to
it as a string.
# Preset values:
accountSID = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' authToken =
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' myNumber = '+15559998888'
twilioNumber = '+15552225678'
from twilio.rest import TwilioRestClient
➊ def textmyself(message):
➋ twilioCli = TwilioRestClient(accountSID, authToken)
➌ twilioCli.messages.create(body=message, from_=twilioNumber, to=myNumber)
该程序保存了账户的 SID、认证标志、发送号码及接收号码。然后它定义了 textmyself(),接收参数➊,创建 TwilioRestClient
对象➋,并用你传入的消息调用 create()➌。
如果你想让其他程序使用 textmyself()函数,只需将 textMyself.py 文件和 Python
的可执行文件放在同一个文件夹中( Windows 上是 C:\Python34,OS X 上是
/usr/local/lib/python3.4,Linux 上是/usr/bin/python3)。现在,你可以在其他程序中使用该函数。只要想在程序中发短信给你,就添加以下代码:
import textmyself
textmyself.textmyself('The boring task is finished.')
注册Twilio 和编写短信代码只要做一次。在此之后,从任何其他程序中发短信,只要两行代码。
小结
通过因特网和手机网络,我们用几十种不同的方式相互通信,但以电子邮件和
短信为主。你的程序可以通过这些渠道沟通,这给它们带来强大的新通知功能。甚至可以编程运行在不同的计算机上,相互直接通过电子邮件能信,一个程序用 SMTP发送电子邮件,另一个用 IMAP 收取。
Python 的 smtplib 提供了一些函数,利用 SMTP,通过电子邮件提供商的 SMTP
服务器发送电子邮件。同样,第三方的 imapclient 和 pyzmail 模块让你访问 IMAP服务器,并取回发送给你的电子邮件。虽然 IMAP 比 SMTP
复杂一些,但它也相当强大,允许你搜索特定电子邮件、下载它们、解析它们,提取主题和正文作为字符串值。
短信与电子邮件有点不同,因为它不像电子邮件,发送短信不仅需要互联网连接。好在,像Twilio
这样的服务提供了模块,允许你通过程序发送短信。一旦通过了初始设置过程,就能够只用几行代码来发送短信。掌握了这些模块,就可以针对特定的情况编程,在这些情况下发送通知或提醒。现在,你的程序将超越运行它们的
计算机!
习题
1.发送电子邮件的协议是什么?检查和接收电子邮件的协议是什么?
2.必须调用哪 4 个 smtplib 函数/方法,才能登录到SMTP 服务器?
3.必须调用哪两个 imapclient 函数/方法,才能登录到IMAP 服务器?
4.传递给 mapObj.search()什么样的参数?
5.如果你的代码收到了错误消息,got more than 10000 bytes,你该怎么做? 6.imapclient 模块负责连接到 IMAP 服务器和查找电子邮件。什么模块负责读
取 imapclient 收集的电子邮件?
7.在发送短信之前,你需要从Twilio 得到哪 3 种信息?
实践项目
作为实践,编程完成以下任务。