使用 Python 和 Twilio 实现每日自动发送天气短信
本文介绍了如何使用 Python 结合 Twilio 短信接口实现每日自动发送天气信息的方案。主要步骤包括注册 Twilio 账号获取试用号码和凭证、验证接收端号码、编写集成天气 API 查询与短信发送功能的脚本、以及配置定时任务。文中提供了完整的代码示例及部署建议,帮助开发者快速搭建自动化通知系统。

本文介绍了如何使用 Python 结合 Twilio 短信接口实现每日自动发送天气信息的方案。主要步骤包括注册 Twilio 账号获取试用号码和凭证、验证接收端号码、编写集成天气 API 查询与短信发送功能的脚本、以及配置定时任务。文中提供了完整的代码示例及部署建议,帮助开发者快速搭建自动化通知系统。

利用 Twilio 提供的免费试用额度,结合 Python 脚本可以自动化发送短信。本文将介绍如何配置环境、获取凭证以及编写定时任务,实现每天自动向指定号码发送天气信息。
要发送短信,首先需要访问 Twilio 官网注册一个账号。
注册成功后,Twilio 会提供一个用于测试的虚拟号码。
在试用模式下,Twilio 限制只能向经过验证的号码发送短信。
注意:免费版通常仅支持验证一个号码。如需更换,需先删除旧号码。
运行代码前,需要安装必要的 Python 库。
pip install twilio requests schedule
twilio: 官方 SDK,用于调用短信接口。requests: 用于请求天气 API。schedule: 简单的定时任务库。以下是一个完整的示例代码,包含获取天气信息和发送短信的功能。
import os
from twilio.rest import Client
import requests
import schedule
import time
# 配置信息 (建议从环境变量读取)
ACCOUNT_SID = 'your_account_sid'
AUTH_TOKEN = 'your_auth_token'
TWILIO_NUMBER = '+1234567890' # 替换为获取的试用号码
RECIPIENT_NUMBER = '+8613800000000' # 替换为已验证的目标号码
WEATHER_API_KEY = 'your_weather_api_key' # 替换为天气服务 API Key
def get_weather(city='Beijing'):
"""
获取天气信息
这里以 OpenWeatherMap 为例,可替换为其他天气服务
"""
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={WEATHER_API_KEY}&units=metric&lang=zh_cn"
try:
response = requests.get(url, timeout=5)
data = response.json()
if data.get('cod') == 200:
temp = data['main']['temp']
desc = data['weather'][0]['description']
return f"今日{city}天气:{desc}, 气温 {temp}°C"
else:
return "无法获取天气信息"
except Exception as e:
return f"天气查询失败:{str(e)}"
def send_sms(message):
"""
发送短信
"""
client = Client(ACCOUNT_SID, AUTH_TOKEN)
try:
message_obj = client.messages.create(
body=message,
from_=TWILIO_NUMBER,
to=RECIPIENT_NUMBER
)
print(f"短信发送成功:{message_obj.sid}")
except Exception as e:
print(f"短信发送失败:{str(e)}")
def job():
"""
定时任务执行函数
"""
weather_msg = get_weather()
full_message = f"【每日天气提醒】\n{weather_msg}\n请记得添衣保暖。"
send_sms(full_message)
if __name__ == "__main__":
# 设置定时任务:每天早上 8:00 执行
schedule.every().day.at("08:00").do(job)
print("程序启动,等待定时任务...")
while True:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次
ACCOUNT_SID 和 AUTH_TOKEN 可在 Twilio 控制台的 Dashboard 页面找到;TWILIO_NUMBER 为试用号码;RECIPIENT_NUMBER 为已验证的接收号码。try-except 块,防止因网络问题导致程序崩溃。schedule 库设定每天固定时间执行。若部署在 Linux 服务器,也可使用 crontab 替代 Python 内置循环。直接运行脚本,观察控制台输出日志,确认短信是否发送成功。
为了保持 24 小时运行,建议将脚本部署到云服务器。
nohup python script.py & 后台运行,或使用 systemd 管理进程。通过上述步骤,我们成功实现了利用 Python 和 Twilio 接口自动发送天气短信的功能。这种方式不仅适用于个人生活提醒,也可以扩展到其他自动化通知场景。需要注意的是,Twilio 试用版有发送频率和数量限制,正式商用建议申请生产账户并购买相应套餐。
此外,Python 生态丰富,此类自动化脚本易于维护。在实际应用中,应妥善保管 API Key 等敏感信息,避免硬编码在代码中,推荐使用环境变量或配置文件进行管理。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online