【问题标题】:Advanced message filter rules in Mozilla ThunderbirdMozilla Thunderbird 中的高级消息过滤规则
【发布时间】:2026-02-03 09:25:02
【问题描述】:

Thunderbird 的过滤机制非常适合简单的事情。 但我想做类似的事情

(如果消息包含 xy 或发件人是 yz)并且状态已读取,请移至垃圾箱

问题是,一个过滤规则只能匹配任何 (= OR) 或所有 (=AND) 过滤条件。 我尝试通过首先在第一个过滤器中使用不可能的标签组合标记所有消息来解决这个问题,然后使用第二个过滤器将所有标记+标记的消息移动到垃圾箱(如果它们被读取),但这效果很差,因为有时没有标记消息,有时没有删除标记的消息。

所有这些的目的是在我阅读它们后立即删除不重要的或通知电子邮件。当然,我可以为它们中的每一个做一个单独的过滤器,但是如果我想改变一些东西,那么对于所有 >20-30 个过滤器规则都会变得乏味。

是否有可能以某种方式侵入过滤器配置,或者是否有其他仅使用一个过滤器的复杂过滤方式?

顺便说一句。如果这很重要,我正在使用 Gmail+IMAP。

【问题讨论】:

    标签: imap thunderbird gmail-imap imessagefilter


    【解决方案1】:

    看看FiltaQilla AddOn - 它允许正则表达式... :-)

    【讨论】:

    • 这就是我想要的! =)
    • 等等,这有什么帮助?我安装了插件,但过滤器仍然只有“匹配所有”或“匹配任何”条件设置。能够运行主题的正则表达式如何解决这个问题?
    • 您可能会使用一个过滤规则,但这将是一个混合了 AND 和 OR 的正则表达式。无论如何,因为此插件已损坏,无法在 12/20 下载。
    【解决方案2】:

    一个不太好但有效的解决方案可能是将您的要求转换为disjunctive normal form。这意味着创建几个过滤器,每个过滤器都有“与”部分。由于多个过滤器是独立的,一个接一个地运行它们会模拟“或”部分。

    在您的特定情况下,(message contains xy OR sender is yz) AND status is read = (message contains xy AND status is read) OR (sender is yz AND status is read)

    这意味着您应该创建两个过滤器,一个用于message contains xy AND status is read,另一个用于sender is yz AND status is read

    【讨论】:

    • 当然,如果您的条件不包含太多原子,您只能使用此方法,否则它可能会“爆炸”到您(恕我直言)不想要的大量过滤器.
    【解决方案3】:

    我强烈建议按照MozillaZine 中的建议使用FiltaQuilla

    示例

    她是我的过滤器:

    • 来自包含@yahoo.es
    • 主题是照片、自拍或图像,加上复数形式,不区分大小写

    【讨论】:

    • 这仅显示条件的 AND,不显示 OR。
    【解决方案4】:

    您也可以手动编辑 \Users... 文件夹中的msgFilterRules.dat 文件。

    (A || B) && C 变为:

    condition="AND (OR (body,contains,A) OR (body,contains,B) AND (to,contains,C)"
    

    注意第一个括号不匹配。

    根据您的要求更改条件。查看其他过滤器,或创建测试过滤器以凭经验学习语法。请注意,对于不同的电子邮件地址和文件夹,有多个 msgFilterRules.dat

    【讨论】:

    • 似乎他们认为这是一个解析错误并修复了“功能”。如果它在 2019 年 10 月有效,那么它肯定在 2021 年 2 月无效
    【解决方案5】:

    我认为没有一种方法可以完全按照您的意愿行事。但我可以建议这种解决方法:

    1. 创建第一个过滤器,仅根据发件人将邮件存储在特定文件夹 (folder1) 中
    2. 创建一个搜索文件夹(文件夹 2),只选择文件夹 1 中的已读邮件
    3. 定期(手动)从文件夹 2 中删除邮件。不幸的是,我没有找到自动执行此操作的方法

    我用这个系统删除了一些日常通知,几天后就没用了。

    【讨论】: