企业微信机器人支持发送包含图片的 Markdown 消息,语法标准为 ``。适用场景为运维通知、报表推送,风险边界在于图片链接必须为 HTTPS 且客户端可公开访问,内网地址无法直接渲染。
先说结论:企业微信机器人 Markdown 消息类型原生支持图片渲染,但强制要求图片链接为 HTTPS 协议且无访问鉴权。
- 适合:自动化运维报警、数据报表推送、业务状态通知等需要图文结合的场景。
- 先看:图片 URL 是否能在企业微信客户端直接打开,确认无登录墙或内网限制。
- 建议:使用公共图床或公司 CDN 托管图片,避免使用本地文件路径或临时签名链接。
命令速用版
以下是发送带图片 Markdown 消息的 JSON payload 结构,可直接用于 HTTP POST 请求体。
{
"msgtype": "markdown",
"markdown": {
"content": "## 告警通知\n\n> 请及时处理"
}
}为什么会这样
企业微信 API 设计遵循标准 Markdown 子集,图片渲染依赖客户端直接拉取链接资源。
机器人消息通过 Webhook 推送,企业微信客户端收到消息后解析 Markdown 语法。对于图片标签,客户端会发起独立的 HTTPS 请求加载图片。如果链接是 HTTP 协议、需要 Cookie 鉴权或位于内网,客户端无法获取资源,导致图片显示为裂图或空白。这是出于安全和网络隔离的考虑,防止内部信息泄露或恶意资源加载。
分步处理
- 准备图片链接:将需要发送的图片上传至支持 HTTPS 访问的服务器或对象存储,确保链接在浏览器无痕模式下可公开访问。
- 构建消息内容:按照 `` 格式编写 Markdown 内容,注意括号和感叹号均为英文符号。
- 调用发送接口:向机器人 Webhook 地址发起 POST 请求,Header 设置 `Content-Type: application/json`,Body 填入上述 JSON 结构。
- 处理特殊字符:如果 Markdown 内容中包含双引号或反斜杠,需在 JSON 字符串中进行转义,避免请求体解析失败。
怎么验证是否生效
发送请求后,观察企业微信手机端和 PC 端群聊窗口。
- 成功表现:消息气泡内直接显示图片内容,下方可能附带图片描述文字。
- 失败表现:显示图片图标但无法加载,或 Markdown 源码直接明文显示。
- 日志检查:检查发送脚本的 HTTP 响应状态码,200 表示接口接收成功,图片加载问题需排查客户端网络。
常见坑
- HTTP 协议限制:企业微信强制要求图片链接为 HTTPS,HTTP 链接会被拦截或不渲染。
- 内网地址不可用:192.168.x.x 或 localhost 地址仅在特定网络环境下有效,多数移动端无法访问。
- 链接带鉴权:带有 Token 或 Cookie 依赖的临时链接可能因客户端无上下文而失效。
- 大小与数量限制:单条消息图片数量和总大小存在限制,过大图片可能导致加载超时。
常见问题
支持发送本地图片路径吗?
不支持。企业微信机器人只能识别网络 URL 链接,本地路径如 C:\img.png 无法被客户端访问。
图片显示裂图怎么办?
检查链接是否为 HTTPS,确认链接在外部网络可访问,且图片格式为常见格式如 PNG 或 JPG。
Markdown 内容里有特殊字符会报错吗?
会。JSON body 中的双引号、反斜杠必须转义,否则会导致请求解析错误,接口返回非 200 状态码。
参考来源
- 企业微信官方开发者文档 - 自建应用 - 发送消息 - Markdown 类型,URL: https://developer.work.weixin.qq.com/document/path/91770