如何过滤Gmail头部并阻止"via"标签的出现

3
我尝试了多种方法将某种类型的电子邮件筛选到标签中,但是过滤器不起作用。
我使用谷歌查找一个脚本来将这些邮件移动到垃圾邮件,但对我来说这些邮件不是垃圾邮件。相反,我只想修改脚本以将这些邮件移到特定标签。
这是我找到的脚本:
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 是在下拉菜单中的“显示原始邮件”选项中找到的电子邮件地址。

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


好的,你在网上找到了一个脚本,现在你需要阅读文档并尝试修改,然后告诉我们哪些部分不起作用。 - Zig Mandel
3个回答

2

编辑:

这个脚本会因为这一行代码而将邮件移动到垃圾邮件文件夹中: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);
        }
    }
}

这个修改版允许你指定顶部标签的名称。如果该标签不存在,它将创建它。然后,它不会将消息移动到垃圾邮件中,而是将其归档并将您选择的标签应用于它。


0
很棒的脚本 - 谢谢。我稍微修改了一下,使用了X_Binding ID,因为我发现营销信息(例如Royal Albert Hall)有一个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);
     }
    }
}

0

太好了!它起作用了,谢谢Calcolat!如果可以再麻烦您一件事,是否可以添加“跳过收件箱(归档)”功能,以便电子邮件直接进入标签而不会堆积在我的收件箱中?


很高兴它能正常工作。是的,你也可以这样做。我刚刚更新了我的答案,加上了一些更改,这将为您应用标签并归档电子邮件。还有一个小提示,如果您有任何评论或进一步的问题,最好点击我的答案下面的“添加评论”链接进行回复。如果您像这样在答案中发布评论或问题,它们可能会被管理员删除。 - Calcolat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接