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

Thunderbird扩展开发:转发邮件图片无法显示报安全错误

解决Thunderbird扩展转发邮件图片显示安全错误问题

问题原因

直接通过setComposeDetails设置邮件body会丢失原始邮件内嵌资源的权限关联:原邮件中的图片引用指向原会话的内部资源,新的撰写窗口无访问权限,从而触发moz-nullprincipal安全错误。手动转发时Thunderbird会自动完成资源复制、CID替换等权限绑定操作,因此图片能正常显示。

解决方案

通过browser.compose.forwardMessage创建转发邮件(让Thunderbird自动处理资源关联),再在已有内容上追加附加信息,而非直接覆盖body:

// 获取选中邮件ID(需确保已有选中邮件的逻辑)
const selectedMessages = await browser.messages.getSelected();
const targetMessageId = selectedMessages[0].id;

// 创建转发邮件,自动处理内嵌资源绑定
const composeTab = await browser.compose.forwardMessage(targetMessageId, {
  to: '你的预设邮箱地址'
});

// 等待窗口初始化,避免获取不完整的内容
await new Promise(resolve => setTimeout(resolve, 100));

// 获取当前转发邮件的详情
const currentDetails = await browser.compose.getComposeDetails(composeTab.id);

// 在原正文后追加附加信息
currentDetails.body += '<div class="extension-append">你的后续处理附加信息</div>';

// 更新邮件内容
await browser.compose.setComposeDetails(composeTab.id, currentDetails);

关键说明

  1. forwardMessage会自动将原邮件的内嵌图片复制到新的撰写会话,并将图片的src替换为cid:格式的引用,确保新窗口有权限访问资源。
  2. 若需自定义正文结构,不要直接使用原邮件的body内容,而是基于forwardMessage生成的已处理正文进行修改。
  3. 短延时等待是为了确保Thunderbird完成资源初始化,避免获取到未完成处理的正文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:50:34