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

能否通过Thunderbird API获取鼠标悬停邮件而非选中邮件?

获取Thunderbird邮件列表中鼠标悬停的邮件信息

Thunderbird官方WebExtension API确实没有直接提供获取鼠标悬停邮件的方法,不过可以通过以下两种可行思路实现需求:

方法1:DOM事件监听+邮件数据映射

  • 给邮件列表中的邮件行元素(通常是带有thread-row或message-row类的tr标签)绑定mouseover事件
  • 鼠标悬停时,从元素上提取邮件的唯一标识(Thunderbird的邮件行元素会通过data-message-id这类属性存储邮件ID)
  • 调用browser.messages.get()方法传入邮件ID,获取完整邮件信息后解析发件人域名

示例代码(内容脚本中):

document.addEventListener('mouseover', (e) => {
  // 找到最接近的邮件行元素,选择器需根据实际DOM结构调整
  const mailRow = e.target.closest('.thread-row, .message-row');
  if (!mailRow) return;

  const messageId = mailRow.getAttribute('data-message-id');
  if (!messageId) return;

  browser.messages.get(messageId).then(message => {
    // 解析发件人邮箱域名
    const senderEmail = message.author;
    const domain = senderEmail.split('@')[1];
    console.log('悬停邮件发件人域名:', domain);
  }).catch(err => {
    console.error('获取邮件信息失败:', err);
  });
});

注意:需要在扩展的manifest.json中配置content_scripts,确保脚本能注入到Thunderbird的邮件列表页面,匹配URL可设置为Thunderbird内置的邮件页面路径(如chrome://messenger/content/messenger.xhtml)。

方法2:XPCOM组件调用(备选,不推荐)

如果WebExtension API无法满足需求,可尝试使用Thunderbird的传统XPCOM组件,但这种方式兼容性差,后续版本可能失效:

  • 获取Thunderbird主窗口:Services.wm.getMostRecentWindow("mail:3pane")
  • 通过窗口的gDBView对象结合鼠标位置获取悬停邮件项
  • 从邮件项中提取发件人信息

该方式不符合现代WebExtension的开发规范,维护成本高,仅作为应急方案。

实用提示

  • 用Thunderbird开发者工具(Ctrl+Shift+I)查看邮件列表DOM结构,确认邮件行的类名和邮件ID存储属性
  • 添加事件防抖逻辑,避免频繁触发API调用导致性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:14:57