本文实例讲述了python实现给微信公众号发送消息的方法。分享给大家供大家参考,具体如下:
现在通过发微信公众号信息来做消息通知和告警已经很普遍了。最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用。当要发送的信息较多,而且希望按照指定格式显示的好看一点的时候,shell处理起来,个人感觉不太方便。于是我用Python重写了发微信的功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#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程序设计有所帮助。