Lazy loaded image
Lazy loaded image使用 Python 发送微信模板消息教程
字数 1535阅读时长 4 分钟
2025-7-3
type
status
date
slug
summary
category
tags
create_time
Jul 2, 2025 05:41 PM
icon
password
my_create_time

📝 前言

之前有一期介绍到了如何申请开通微信模板消息《个体户申请服务号认证和开通模板消息指南》
这期再来介绍一下,如何通过 Python 来给指定的微信用户发送模板消息提醒。

🧭 背景介绍

微信模板消息广泛应用于自动通知支付提醒订单状态更新等场景,尤其对中小企业和个人开发者而言,是实现消息推送自动化的重要手段。
微信官方平台提供了模板消息接口,我们可以结合 Python 编程语言,实现自动化推送功能,提高运营效率。

📌 使用场景

  • 自动向用户推送提醒(如:课程开始、订单发货、订阅到期等)
  • 构建微信服务号的消息服务
  • 企业内部消息提醒系统
  • 与爬虫、数据分析等任务联动实现定时通知

📋 前提条件

在开始之前,请确保你已满足以下条件:
  • 拥有一个已认证的微信服务号
  • 模板消息功能已开通
  • 熟悉基本的Python语言

🧑‍💻 详细步骤

1️⃣ 获取服务号AppID 和 AppSecret

在启用AppSecret之前,需要先成为开发者,进入服务号控制台 → 设置与开发 → 开发接口管理 → 成为开发者。
notion image
再启用AppSecret,需要另外保存好AppID和AppSecret,后面会用到。
notion image

2️⃣ 选择消息模板类目

这里需要选择类目模板库,如果选择的行业没有任何模板不建议申请新的模板,因为审核很严,可以换个常见的行业再找找现成的可用模板。
PS:一个服务号最多只能设置5个服务类目。
notion image
notion image
notion image
服务类目一定要选常用的,我刚开始选择工具 → 日历,结果里面一个模板都没有,申请也不给通过。。
后面选择 商业服务 → 软件/建站/技术开发,就有很多现成的模板可用了。

3️⃣ 选择消息模板

选择完类目后,回到模板消息 → 模板库 → 类目模板库,就可以看到有很多现成的模板可用了。
选择一个适合自己场景的模板,并挑选好需要的关键词即可。
notion image

4️⃣ 获取access_token

我们发送模板消息必须要先获取access_token,而微信提供了2个接口可以获取access_token,对比如下:
项目
普通 access_token 接口
稳定版 access_token 接口
接口地址
https://api.weixin.qq.com/cgi-bin/token
https://api.weixin.qq.com/cgi-bin/stable_token
请求方式
GET
POST
请求参数
appidsecretgrant_type=client_credential
JSON 格式传参: { "grant_type": "client_credential", "appid": "<你的AppID>", "secret": "<你的AppSecret>" }
请求示例
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
POST 到 https://api.weixin.qq.com/cgi-bin/stable_token,Body 参数如上所示
接口特点
普通接口,存在高并发下限频风险
稳定版接口,官方建议在高并发下使用,系统自动降级为普通接口
并发优化
无并发控制机制,频繁调用可能触发频率限制
内部具备自动限流和稳定性处理,更适合大规模使用场景
官方推荐场景
小程序、公众号小规模使用
企业级应用、大量接口调用时建议使用
返回值
{ "access_token": "ACCESS_TOKEN", "expires_in": 7200 }
返回结构相同:access_tokenexpires_in
默认token都是7200秒有效期,这里建议直接使用稳定版接口即可。
Python 获取access_token代码示例(稳定版):

5️⃣ 设置IP白名单

首次调用接口获取access_token时,如果没有设置IP白名单,会提示以下错误信息:
这是出于安全考虑,因此我们需要根据返回的IP地址,也即invalid ip后面的部分设置白名单。
进入在服务号控制台 → 设置与开发 → 安全中心 → 设置IP白名单
notion image

6️⃣ 发送模板消息

在发送模板消息之前,我们还需要获取用户微信的openid,这个可以引导用户关注服务号,再动态获取,限于篇幅这期我们先省略这部分,直接使用一个固定测试用的openid。
接口地址:https://api.weixin.qq.com/cgi-bin/message/template/send
Python 发送模板消息代码示例:
参数说明:
  • 用户OpenID,可在关注时动态获取并保存
  • 模板消息ID,选择消息模板后,会提供一个模板ID
  • 跳转链接,可选如果想要跳转到网页或小程序可以加上
  • data,模板消息内容,这个比较关键,选择完消息模板后,进入模板详情可查看,示例如下:
notion image
对应查看代码中的参数,value为实际动态发送的值。
注意:模板标题是没办法改的,所以尽量选择一个合适的模板。

7️⃣ 接收模板消息

发送完后,用户就可以在微信客户端(手机/PC)查看到发送的提醒消息,如下:
notion image

🧪 测试建议

  • 请先使用开发者工具中的测试号进行测试
  • 模板消息字段严格匹配模板格式,字段命名不可随意更改
  • 每次 Access Token 获取后有效期为 2 小时,建议缓存处理

✅ 总结

通过本教程,你可以快速实现微信模板消息自动推送功能,无论用于服务号用户提醒,还是企业内部通知,Python 都能帮助你构建高效的消息系统。
未来可扩展方向包括:
  • 定时任务(使用 scheduleAPScheduler
  • 消息队列处理(如 RabbitMQ/Kafka)
  • 集成在 Flask/Django 项目中统一管理通知
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
定时任务之 XXL-JOB 入门介绍
下一篇
使用 sealos 一键部署 k8s 集群

评论
Loading...