如何过滤 Gmail 邮件头并停止 "via" 进入标签

How to filter Gmail headers and stop "via" into labels

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

我用 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 是我在下拉菜单的 "Show Original" 选项中找到的电子邮件地址。

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

编辑:

由于这一行,脚本正在将邮件移至垃圾邮件文件夹: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);
        }
    }
}

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

完美!它有效,谢谢 Calcolat!如果我能再打扰你一件事,是否可以添加 "Skip the Inbox (Archive it)" 功能,这样电子邮件将直接转到标签而不堆放在我的收件箱中?

很棒的剧本 - 谢谢。我稍微修改了 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);
     }
    }
}