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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
对Python中内置异常层次结构详解
Oct 18 Python
python 内置模块详解
Jan 01 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
python3转换code128条形码的方法
Apr 17 Python
pandas的排序和排名的具体使用
Jul 31 Python
Python数据库小程序源代码
Sep 15 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
解析python 类方法、对象方法、静态方法
Aug 15 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
PHP URL路由类实例
2013/11/12 PHP
php实现图片压缩处理
2020/09/09 PHP
jquery.validate分组验证代码
2011/03/17 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
Python常见数据结构详解
2014/07/24 Python
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python if语句知识点用法总结
2018/06/10 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python列表对象实现原理详解
2019/07/01 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
政工例会汇报材料
2014/08/26 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
新学期开学标语2015
2015/07/16 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
Python制作春联的示例代码
2022/01/22 Python