python实现给微信公众号发送消息的方法


Posted in Python onJune 30, 2017

本文实例讲述了python实现给微信公众号发送消息的方法。分享给大家供大家参考,具体如下:

现在通过发微信公众号信息来做消息通知和告警已经很普遍了。最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用。当要发送的信息较多,而且希望按照指定格式显示的好看一点的时候,shell处理起来,个人感觉不太方便。于是我用Python重写了发微信的功能。

#coding:utf-8
import urllib2
import json
import sys
def getMsg():
  #为了避免发送中文消息报错,使用utf8方式编码
  reload(sys)
  sys.setdefaultencoding('utf8')
  #这个方法生成想要发送的消息
  msg = '''
要发送的消息1
要发送的消息2
要发送的消息3
...
'''
  return msg
if __name__ == '__main__':
  #微信公众号上应用的CropID和Secret
  CropID='xxxxxxxxxxxxxxxxxx'
  Secret='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  #获取access_token
  GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (CropID,Secret)
  result=urllib2.urlopen(urllib2.Request(GURL)).read()
  dict_result = json.loads(result)
  Gtoken=dict_result['access_token']
  #生成通过post请求发送消息的url
  PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Gtoken
  #企业号中的应用id
  AppID=1
  #部门成员id,微信接收者
  UserID=1
  #部门id,定义可接收消息的成员范围
  PartyID=1
  #生成post请求信息
  post_data = {}
  msg_content = {}
  msg_content['content'] = getMsg()
  post_data['touser'] = UserID
  post_data['toparty'] = PartyID
  post_data['msgtype'] = 'text'
  post_data['agentid'] = AppID
  post_data['text'] = msg_content
  post_data['safe'] = '0'
  #由于字典格式不能被识别,需要转换成json然后在作post请求
  #注:如果要发送的消息内容有中文的话,第三个参数一定要设为False
  json_post_data = json.dumps(post_data,False,False)
  #通过urllib2.urlopen()方法发送post请求
  request_post = urllib2.urlopen(PURL, json_post_data)
  #read()方法查看请求的返回结果
  print request_post.read()

注意:

2017年6月初开始,微信企业公众号迁移到企业微信,发送消息有一些调整,请参考前文《[企业公众号]升级到[企业微信]之后发送消息失败的解决方法》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
Python之str操作方法(详解)
Jun 19 Python
Python定时任务sched模块用法示例
Jul 16 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python 可视化神器Plotly详解
Dec 26 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
python lambda的使用详解
Feb 26 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 Python
Python信息抽取之乱码解决办法
Jun 29 #Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 #Python
python笔记:mysql、redis操作方法
Jun 28 #Python
老生常谈Python序列化和反序列化
Jun 28 #Python
python flask实现分页效果
Jun 27 #Python
Django自定义分页效果
Jun 27 #Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 #Python
You might like
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python中协程用法代码详解
2018/02/10 Python
python图书管理系统
2020/04/05 Python
python numpy格式化打印的实例
2018/05/14 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
2015最新民情日记范文
2015/06/26 职场文书
nginx优化的六点方法
2021/03/31 Servers
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
Python Pandas常用函数方法总结
2021/06/15 Python