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中逻辑运算符的使用
May 13 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Python远程视频监控程序的实例代码
May 05 Python
django使用xadmin的全局配置详解
Nov 15 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Python自动化测试笔试面试题精选
Mar 12 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
详解Scrapy Redis入门实战
Nov 18 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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/11/26 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
微信小程序radio组件使用详解
2018/01/31 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
使用Python对Access读写操作
2017/03/30 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python中单、双下划线的区别总结
2017/12/01 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
运动会广播稿400字
2014/01/25 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
校长创先争优承诺书
2014/08/30 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB