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

Thunderbird WebExtensions/MailExtensions开发:如何处理新邮件等事件?

Thunderbird WebExtensions API 实现邮件监听方案

针对你需要的两个功能,以下是基于Thunderbird 91+支持的WebExtensions/MailExtensions API的实现方式,完全无需依赖旧版Components API:

1. 监听非垃圾新邮件到达

使用messages.onNewMail事件监听新邮件,通过过滤邮件所在文件夹类型排除垃圾邮件:

// 在后台脚本(background.js)中添加监听
browser.messages.onNewMail.addListener(async (newMessages) => {
  for (const msg of newMessages) {
    // 获取邮件所属文件夹
    const folder = await browser.folders.get(msg.folderId);
    // 排除垃圾文件夹的邮件
    if (folder.type !== "junk") {
      // 此处执行你的自定义操作
      console.log("收到非垃圾新邮件:", msg.subject);
      // 例如发送通知、触发特定逻辑等
    }
  }
});

2. 监听邮件已读状态变更并检查全局未读邮件

使用messages.onUpdated事件监听邮件已读状态变化,之后遍历所有文件夹统计未读邮件数量:

// 在后台脚本中添加监听
browser.messages.onUpdated.addListener(async (msgId, changes) => {
  // 仅处理邮件被标记为已读的场景
  if (changes.isRead?.newValue === true) {
    // 获取所有邮箱文件夹
    const allFolders = await browser.folders.list({});
    let totalUnread = 0;

    for (const folder of allFolders) {
      // 可选:跳过垃圾、已删除等无需统计的文件夹
      if (folder.type === "junk" || folder.type === "trash") continue;
      totalUnread += folder.unreadMessageCount || 0;
    }

    // 无未读邮件时执行操作
    if (totalUnread === 0) {
      console.log("所有邮件已读,执行自定义操作");
      // 例如关闭提醒、同步数据等
    }
  }
});

必要的权限配置

在manifest.json中声明所需权限,确保扩展能正常调用API:

{
  "manifest_version": 2,
  "name": "你的扩展名称",
  "version": "1.0",
  "permissions": [
    "messages",
    "folders"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:33:35