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 相关文章推荐
wxPython 入门教程
Oct 07 Python
python从ftp下载数据保存实例
Nov 20 Python
Python struct模块解析
Jun 12 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
基于Django统计博客文章阅读量
Oct 29 Python
python3 求约数的实例
Dec 05 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
Python爬虫爬取百度搜索内容代码实例
Jun 05 Python
Python改变对象的字符串显示的方法
Aug 01 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
Python用access判断文件是否被占用的实例方法
Dec 17 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中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
angularJS 入门基础
2015/02/09 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python 查看文件的编码格式方法
2017/12/21 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
django实现用户注册实例讲解
2019/10/30 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python configparser模块应用过程解析
2020/08/14 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
软件测试面试题
2014/01/05 面试题
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
民政工作个人总结
2015/02/28 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
收入证明申请书
2015/06/12 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
关于nginx 实现jira反向代理的问题
2021/09/25 Servers