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
相关产品推荐
相关产品推荐

