企微群机器人返回发送成功但群内未显示图片,最常见原因是图片链接无法被企业微信服务器公开访问。API 返回成功仅代表请求被接收,不代表图片资源抓取成功,需优先检查图片 URL 是否为公网可访问链接。
先说结论:接口返回 errcode 0 仅表示消息请求合法,图片未显示通常是因为企业微信服务器无法拉取你提供的图片链接。
- 先确认:图片 URL 是否无需登录即可在浏览器隐身模式打开
- 先处理:更换为公网图床链接或确保服务器外网可通
- 再验证:使用官方提供的测试图片 URL 发送对比
快速处理思路
使用 curl 命令在服务器外网环境测试图片链接可达性,确认企业微信服务器能否 fetch 到该资源。
curl -I "你的图片链接"
检查返回状态码是否为 200,且 Content-Type 是否为 image/jpeg 或 image/png。如果返回 403 或 401,说明存在防盗链或权限限制。
为什么会这样
企业微信机器人发送图片消息采用的是“链接拉取”机制,而非“文件上传”机制。当你的程序调用 API 发送成功时,企业微信服务器会异步去请求你提供的图片 URL。如果该 URL 是内网地址、需要 Cookie 认证或存在 Referer 防盗链,企业微信服务器无法获取图片内容,导致消息发送成功但图片无法渲染。
分步处理
按照以下顺序排查配置和网络环境,确保图片资源符合 API 要求。
1. 检查图片链接公网可达性
在手机切换至 4G/5G 网络(非公司 Wi-Fi)或使用浏览器隐身模式打开图片链接。如果无法打开,企业微信服务器同样无法打开。需将图片上传至公网可访问的对象存储或图床。
2. 检查图片大小和格式
确认图片大小不超过 2MB,格式为 PNG 或 JPG。超出限制的图片即使链接可达,也可能被服务端过滤而不显示。检查 HTTP 响应头中的 Content-Length 确认文件大小。
3. 检查机器人状态
确认机器人未被移出群聊,且群聊未开启“禁止机器人发言”设置。尝试发送一条纯文本消息验证机器人连接状态是否正常。
怎么验证是否生效
使用一个已知可用的公网图片链接(如企业微信官方 Logo 链接)替换当前 payload 中的图片 URL 发送测试。如果官方链接能显示而你的链接不能,确认为图片源问题;如果官方链接也不能显示,确认为机器人或群配置问题。
常见坑
1. 内网地址误用:使用 192.168.x.x 或 localhost 地址作为图片 URL,企业微信外网服务器无法访问。
2. 鉴权链接过期:使用带 Token 的临时链接,发送时链接已失效。需使用永久链接或确保有效期覆盖发送时间。
3. Base64 误解:群机器人 webhook 接口不支持直接传 Base64 图片数据,必须使用 URL 地址。
4. 防盗链拦截:图片服务器设置了 Referer 白名单,拦截了企业微信服务器的请求头。
常见问题
图片消息发送失败会有错误码提示吗?
通常不会。图片拉取失败属于异步过程,API 接口本身只校验 payload 格式,格式正确即返回成功,图片加载失败不会回传错误码。
支持发送 Base64 格式的图片吗?
不支持。群机器人 webhook 接口仅支持图片 URL 地址,如需发送 Base64 需先上传至服务器生成公网链接。
为什么文本消息正常但图片消息不显示?
文本消息不依赖外部资源拉取,而图片消息依赖企业微信服务器对你的图片 URL 的访问权限,问题通常出在图片源而非机器人配置。