使用 Python 发送钉钉消息并附加图片

在日常工作中,钉钉作为一个高效的沟通工具,广泛应用于团队协作和信息传递。为了提高工作效率,很多开发者希望通过编写脚本实现自动发送钉钉消息的功能,包括文本和图片。本文将详细介绍如何使用 Python 发送钉钉消息,并附上图片。

1. 钉钉机器人介绍

钉钉提供了Webhook接口,允许用户通过发送HTTP请求来实现自动化消息发送。每个钉钉群聊都可以配置一个机器人,机器人的Webhook地址可以用于发送文本、图片等信息。

1.1 Webhook 的获取

  1. 打开钉钉群聊,点击群设置。
  2. 选择“智能机器人”并添加“自定义”机器人。
  3. 记下生成的Webhook URL。

2. 准备工作

在开始编写 Python 代码之前,需要安装 requests 库来处理 HTTP 请求。你可以通过以下命令安装它:

pip install requests

3. 发送消息的代码示例

下面的代码示例演示了如何发送文本消息和图片消息:

import requests
import json

# 钉钉Webhook地址
WEBHOOK_URL = '

def send_text_message(content):
    headers = {'Content-Type': 'application/json'}
    data = {
        "msgtype": "text",
        "text": {
            "content": content
        }
    }
    response = requests.post(WEBHOOK_URL, headers=headers, data=json.dumps(data))

    if response.status_code == 200:
        print("文本消息发送成功!")
    else:
        print(f"发送失败,状态码:{response.status_code}")

def send_image_message(image_url):
    headers = {'Content-Type': 'application/json'}
    data = {
        "msgtype": "actionCard",
        "actionCard": {
            "title": "这里是标题",
            "text": f"![Alt text]({image_url})",
            "btns": []
        }
    }
    response = requests.post(WEBHOOK_URL, headers=headers, data=json.dumps(data))

    if response.status_code == 200:
        print("图片消息发送成功!")
    else:
        print(f"发送失败,状态码:{response.status_code}")

# 示例调用
send_text_message("Hello, 钉钉!")
send_image_message("

在这个代码示例中,我们定义了两个函数:send_text_messagesend_image_message。前者用于发送文本消息,而后者用于发送图片消息。在调用这些函数前,请替换 WEBHOOK_URL 为你的钉钉群组的真实Webhook地址。

4. 图片消息的注意事项

  • 图片 URL:确保图片的 URL 是可以被外网访问的。
  • 图片格式:钉钉支持常见的图片格式(如 PNG、JPG 等),请确保使用合适的格式。

5. 小应用:自动发送周报图片

下面的例子是一个简单的应用,自动生成周报图片并通过钉钉发送:

import matplotlib.pyplot as plt

def create_report():
    # 饼状图数据
    labels = ['工作', '休息', '学习']
    sizes = [50, 30, 20]

    # 绘制饼状图
    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.title("活动时间分配")
    plt.savefig('report.png')
    plt.close()

# 创建周报
create_report()

# 发送周报图片
send_image_message("  # 替换为实际图片 URL

在这个例子中,我们使用 matplotlib 生成了一张饼状图,展示不同活动的时间分配。可以通过自动化定时任务每天生成并发送周报。

pie
    title 活动时间分配
    "工作": 50
    "休息": 30
    "学习": 20

6. 结尾

通过上述步骤,我们已经完成了使用 Python 自动化发送钉钉消息并附加图片的功能。这不仅提高了信息传递的效率,也为团队的工作提供了更多的便利。希望这篇文章能帮助你更好地理解如何利用钉钉的自动化 API 来提高工作效率。抓住机会,把这些脚本运用到日常工作中,创造更多的价值!