python实现发送图片消息到企业微信
一、前言
之前写过python实现钉钉机器人发送消息的脚本,如今又写了下python机器人给企业微信发送消息的脚本,发现实现企业微信机器人发送消息还是简单一些,钉钉稍微复杂一些。
二、实现代码以及实现过程中遇到的问题
刚开始是把图片转码与与图片md5的获取写在一个with open 下,以为这样简便一些,少些一行代码,即如下代码形式:
import requests import base64 import hashlib def send_image_message(): with open('./pictures/bug.png','rb') as f: # 转换图片为base64格式 base64_data = base64.b64encode(f.read()) image_data = str(base64_data,'utf-8') # 获取图片的md5值 md = hashlib.md5() md.update(f.read()) image_md5 = md.hexdigest() # 企业微信机器人发送图片消息 url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx' headers = {"Content-Type":'application/json'} data = { 'msgtype':'image', 'image':{ 'base64':image_data, 'md5':image_md5 } } # 发送请求 r = requests.post(url,headers=headers,json=data)
发现这样写之后执行脚本,脚本执行成功了但是机器人没发送消息,后面发现图片转码与与图片md5的获取不能写在一个with open 下,正确的代码实现应该是下面贴出的代码:
import requests import base64 import hashlib def send_image_message(): with open('./pictures/bug.png','rb') as f: # 转换图片为base64格式 base64_data = base64.b64encode(f.read()) image_data = str(base64_data,'utf-8') with open('./pictures/bug.png','rb') as f: # 获取图片的md5值 md = hashlib.md5() md.update(f.read()) image_md5 = md.hexdigest() # 企业微信机器人发送图片消息 url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx' headers = {"Content-Type":'application/json'} data = { 'msgtype':'image', 'image':{ 'base64':image_data, 'md5':image_md5 } } # 发送请求 r = requests.post(url,headers=headers,json=data)
三、实现效果图