是否可以创建适用于发件人,收件人,主题以外的标头的Gmail过滤器?


105

我已经将我的一个非常古老的电子邮件地址转发给了Gmail。我想创建一个过滤器,以使到该旧地址的所有邮件始终在Gmail中正确标记。

我可以使用包含该地址的“收件人:”创建一个Gmail过滤器,但是该过滤器不会捕获所有发送到该地址的邮件,仅捕获那些明确发送的邮件。通常,在垃圾邮件中,其他人是显式收件人,而我的旧地址只是“密件抄送”。“收件人:”过滤器不起作用。

什么我喜欢做的是对“投递至:”过滤头。Gmail可以做到这一点吗?还是我坚持使用“发件人”,“收件人”,“主题”这三个标准选项?


Answers:


68

是的,您可以按交货至过滤。只需deliveredto:youremail@address.com在该has the words字段中创建一个新的过滤器即可。


不是很直观,但是可以。我认为大多数to:应该deliveredto:实际上是为了支持密件抄送。
lapo 2012年

这是否也适用于通配符,例如,使用中的全部电子邮件地址deliveredto:*@mydomain.com?我正在尝试,但需要时间进行测试。
Marcos 2012年

1
请注意,您可以使用GMail顶部的搜索栏来构建高级搜索,然后单击搜索栏末尾的箭头并选择“使用此搜索创建过滤器”。
Feckmore

2
这不能解决除“传递给”之外的其他标头的问题吗?(对自动提交的标题或优先标题进行搜索)
Gert van den Berg

2
标题文本为“ Delivered-To:”是很令人讨厌的,而“ has”字段消除了“-”以产生“ deliveredto:”。
詹姆斯·鲍里

36

以下是所有高级运算符的列表:

从:
到:
主题:

-(连字符)
标签:
具有:附件
列表:
文件名:
“”(引号)
()
于:任意位置
:收件箱
中:垃圾箱
:垃圾邮件
中:重要
是:已加星标
是:未读
是:
已读:黄色星
已:红色星
已:橙色星
已:绿色星
已:蓝色星
已:紫色星
已:红色爆炸
已:橙色吉利梅特
已:黄色爆炸
已:绿色-检查
has:blue-info
has:purple-question
cc:
bcc:
之后:
之前:
年长:
较新:
older_than:
newer_than:
是:聊天
传送到:
圈子:
has:circle
类别:
大小:
较大:
较小:
+(加号)
rfc822msgid:
has:userlabels
has:nouserlabels

[ 来源 ]


谢谢。即使是他们的页面,也很难确定NOT运算符-是否适用于通配符地址,例如:-*@mydomain.comTo:现场
Marcos

31
  1. 转到https://script.google.com并创建一个新的Google Apps脚本

新的Google Apps脚本。

  1. 选择“为Gmail创建脚本”选项

    • 这将创建一个脚本项目
    • 这将创建一个名为 Code.gs
    • 这将创建示例函数,其中一个名为 processInbox
  2. 保存项目

  3. 自定义脚本并对其进行测试,直到满意为止
  4. 找到“自定义项目的触发器”按钮

    自定义触发按钮

    • 这将使您可以在计时器上运行脚本(例如每天或每分钟

例:

processInbox

此功能将遍历收件箱中的所有邮件。

function processInbox() {
   // process all recent threads in the Inbox (see comment to this answer)
   var threads = GmailApp.search("newer_than:1h");
   for (var i = 0; i < threads.length; i++) {
      // get all messages in a given thread
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
         var message = messages[j];
         processMessage(message);
      }
   }
}

GmailApp.search()如果您想做点别的事情而不是,请进一步走一步并致电GmailApp.getInboxThreads()

processMessage

该功能将处理单个消息。您将获得原始内容,getRawContent()并尝试在其中找到标题,如果该标题在其中,请标记消息。

function processMessage(message) {
  var body = message.getRawContent();
  if (body.indexOf("X-Custom-Header: some-custom-value") > -1) {
    // do stuff with message (e.g. add label)
  }
}

11
我未经证实的直觉反应是,Google将采取适当措施阻止用户每分钟浏览大量的原始电子邮件内容。因此,我建议替换为“ var thread = GmailApp.getInboxThreads();” 与“ var thread = GmailApp.search(“ newer_than:1h”);“
2015年

我使用此var MyEmails = GmailApp.search("is:unread in:inbox");命令来搜索收件箱中尚未阅读的所有电子邮件
Ronen Ariely

@Rick-我编写了一个脚本,该脚本使用IMAP界面浏览了Gmail帐户中的所有13 + GB。“如果script.google.com允许,我不会感到惊讶。
broofa

1

如@mvime所示,可以在创建过滤器时deliveredto:Has the words字段中使用运算符。但是,并非所有电子邮件提供商都将附加Delivered-to到电子邮件标头,因此一种更可靠的方法是转发you@oldemail.comyou+oldemail@gmail.com并按过滤deliveredto:(you+oldemail@gmail.com)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.