You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot(Java)使用telegrambots 5.3.0发送HTML格式SendMessage如何嵌入图片

修复方案

问题核心原因

你代码里存在两个直接导致功能失效的错误:

  • 你主动调用了disableWebPagePreview()禁用了网页预览:你参考的零宽空格嵌入图片方案,核心逻辑是依赖Telegram自动抓取图片链接的预览生成内嵌图,禁用预览后该逻辑完全不生效
  • 执行请求时传错了对象:你构造的请求实例是sendMessage,但最后执行时传入的是未定义的message变量,请求自然无法正确发送

具体修改步骤

  1. 删掉sendMessage.disableWebPagePreview();这行代码,放开网页预览权限
  2. 将最后执行请求的代码改为executeAsync(sendMessage);,传入正确的请求对象
  3. 冗余配置清理:setParseMode(ParseMode.HTML)和enableHtml(true)功能完全重复,保留任意一个即可,避免版本兼容冲突

修改后可运行代码示例

SendMessage sendMessage = new SendMessage();
sendMessage.setParseMode(ParseMode.HTML);
sendMessage.setChatId(chatId);
// 如果需要同时发送文本内容,直接拼接在a标签前后即可
String html = "<a href=\"https://www.carspecs.us/photos/c8447c97e355f462368178b3518367824a757327-2000.jpg\">&#8205;</a>这里放你要发送的正文内容";
sendMessage.setText(html);
executeAsync(sendMessage);

更稳定的替代方案

如果你需要更高的兼容性,建议直接使用官方提供的带图消息接口,无需依赖网页预览规则:

SendPhoto sendPhoto = new SendPhoto();
sendPhoto.setChatId(chatId);
// 直接传入图片URL作为photo参数
sendPhoto.setPhoto(new InputFile("https://www.carspecs.us/photos/c8447c97e355f462368178b3518367824a757327-2000.jpg"));
// 正文内容放在caption里,支持HTML格式
sendPhoto.setCaption("这里放你要发送的正文内容,支持<a href=\"xxx\">HTML标签</a>");
sendPhoto.setParseMode(ParseMode.HTML);
executeAsync(sendPhoto);

你使用的5.3.0版本telegrambots依赖支持上述所有用法,无需调整依赖版本。

内容的提问来源于stack exchange,提问作者leonaugust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:54:05