【问题标题】:How to filter Gmail headers and stop "via" into labels如何过滤 Gmail 标题并停止“通过”进入标签
【发布时间】:2015-10-15 01:52:14
【问题描述】:

我尝试了几种方法将一种类型的电子邮件过滤到标签中,但过滤器不起作用。

我使用 Google 找到了将此类电子邮件移至垃圾邮件的脚本,但这些电子邮件对我来说不是垃圾邮件。相反,我只想修改脚本以将这些电子邮件移动到某个标签。

这是我找到的脚本:

var threads = GmailApp.getInboxThreads(0, 5);

for (var i = 0; i < threads.length; i++) 
{
    var messages=threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) 
    {
        var message=messages[j];
        var body=message.getRawContent();

        if(body.indexOf("X-Forwarded-For: email@example1.com email@example2.com")>-1)
        {
            GmailApp.moveThreadToSpam(threads[i]);
        }

        Utilities.sleep(1000);
        }
    }
}

X-Forwarded-For: email@example1.com email@example2.com 是我在下拉菜单的“显示原件”选项中找到的电子邮件地址。

您能否帮我修改脚本以将这些特定类型的电子邮件移动到标签中而不是垃圾邮件?

【问题讨论】:

  • 好的,您在网络上找到了一个脚本,但现在您需要阅读文档并尝试修改并向我们展示什么不起作用。

标签: google-apps-script gmail x-forwarded-for


【解决方案1】:

编辑:

脚本正在将邮件移动到垃圾邮件文件夹,因为这行:GmailApp.moveThreadToSpam(threads[i]);

如果您想为邮件应用标签而不是将其标记为垃圾邮件,您可以使用threads[i].addLabel(label)。要归档邮件以便将它们移出收件箱,您可以使用threads[i].moveToArchive()

这是一个更新的示例:

var threads = GmailApp.getInboxThreads(0, 5);

var label = GmailApp.getUserLabelByName("LABEL NAME GOES HERE");

if (label == null) 
{
    var label = GmailApp.createLabel(label);
}

for (var i = 0; i < threads.length; i++) 
{
    var messages=threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) 
    {
        var message=messages[j];
        var body=message.getRawContent();

        if(body.indexOf("X-Forwarded-For: email@example1.com email@example2.com")>-1)
        {
            threads[i].moveToArchive();                
            threads[i].addLabel(label);
        }

        Utilities.sleep(1000);
        }
    }
}

修改后的版本允许您在顶部指定标签的名称。如果标签尚不存在,它将创建它。然后,它不会将邮件移至垃圾邮件,而是将其归档并应用您选择的标签。

【讨论】:

    【解决方案2】:

    完美!它有效,谢谢Calcolat!如果我再打扰您一件事,是否可以添加“跳过收件箱(存档)”功能,以便电子邮件直接进入标签而不堆叠我的收件箱?

    【讨论】:

    • 很高兴它有效。是的,你也可以这样做。我刚刚更新了我上面的答案,并进行了一些更改,这些更改将应用​​标签并为您存档电子邮件。也只是一个快速提示,但如果您有任何 cmets 或其他问题,最好单击我的答案下的“添加评论”链接并以这种方式回复。如果您将 cmets 或问题作为这样的答案发布,如果版主看到它们,它们可能会被删除。
    【解决方案3】:

    很棒的脚本 - 谢谢。我稍微修改了 id 以使用 X_Binding ID,因为我发现营销信息(在此示例中为皇家阿尔伯特音乐厅)有一个 xbinding ID,而订单确认邮件没有!我设置了一个每日计时器来清理垃圾!

    function FilterVia() {
    var threads = GmailApp.getInboxThreads(0, 5);
    var label = GmailApp.getUserLabelByName("CIRCULARS");
    if (label == null) 
    {
        var label = GmailApp.createLabel(label);
    }
    for (var i = 0; i < threads.length; i++) 
    {
        var messages=threads[i].getMessages();
        for (var j = 0; j < messages.length; j++) 
    {
        var message=messages[j];
        var body=message.getRawContent();
    
        if(body.indexOf("X-Binding-ID: RoyalAlbertHallMarketing")>-1)
         {
            threads[i].moveToArchive();                
            threads[i].addLabel(label);
         }
    
             Utilities.sleep(1000);
         }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 2022-01-12
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多