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)

 

三、实现效果图

  

 

posted @ 2022-07-21 12:02  梅梅不想踩坑  阅读(1614)  评论(0编辑  收藏  举报