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内置数据类型详解
Aug 18 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Python基于Tkinter编写crc校验工具
May 06 Python
学习Python需要哪些工具
Sep 04 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
javascript 精粹笔记
2010/05/09 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
Express.JS使用详解
2014/07/17 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
JS中准确判断变量类型的方法
2020/06/01 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python功能键的读取方法
2015/05/28 Python
Python中的super用法详解
2015/05/28 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
python手写均值滤波
2020/02/19 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
用python计算文件的MD5值
2020/12/23 Python
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
编辑找工作求职信范文
2013/12/16 职场文书
小学新教师培训方案
2014/02/03 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
《春笋》教学反思
2014/04/15 职场文书
保险公司开门红口号
2014/06/21 职场文书
合作协议书范文
2014/08/20 职场文书
敬老月活动总结
2014/08/28 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB