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 随机生成中文验证码的实例代码
Mar 20 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
用python打印1~20的整数实例讲解
Jul 01 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
JS解析XML的实现代码
2009/11/12 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
js格式化时间小结
2014/11/03 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jquery制做精致的倒计时特效
2016/06/13 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python selenium 三种等待方式解读
2016/09/15 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python使用python-docx读写word文档
2019/08/26 Python
python 安装impala包步骤
2020/03/28 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
什么是Web Service?
2012/07/25 面试题
广告学专业推荐信范文
2013/11/23 职场文书
十八大感想感言
2014/02/10 职场文书
音乐幼师求职信
2014/07/09 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
结婚当天新郎保证书
2015/05/08 职场文书