Можно ли создать фильтр Gmail, который работает с заголовками, отличными от From, To, Subject?

105

Я отправил один из моих действительно старых адресов электронной почты в Gmail. Я хотел бы создать фильтр, чтобы любая почта на этот старый адрес всегда была правильно помечена в Gmail.

Я могу создать фильтр Gmail с «To:», содержащим этот адрес, но он не перехватывает все письма на этот адрес, а только те, которые адресованы явно. Часто есть спам, где кто-то еще является явным получателем, и мой старый адрес был просто Bcc'd. Фильтр «Кому:» не работает.

То, что я хотел бы сделать, это фильтр по заголовку «Delivered-To:». Это возможно с Gmail или я застрял с тремя стандартными опциями От, До, Тема?

Крис В. Ри
источник
Связанный: Создайте фильтр Gmail для Уведомлений Календаря
Новая Александрия

Ответы:

68

Да, вы можете фильтровать по доставке. Просто создайте новый фильтр deliveredto:youremail@address.comв has the wordsполе.

mvime
источник
Не очень интуитивно понятно, но да. Я думаю, что большинство to:должно быть на deliveredto:самом деле, чтобы поддержать BCC.
Lapo
Работает ли это также с подстановочными знаками, например, с использованием универсального адреса электронной почты в deliveredto:*@mydomain.com? Я пытаюсь это сделать, но потребуется время, чтобы проверить.
Маркос
1
Обратите внимание, что вы можете использовать панель поиска в верхней части GMail для создания расширенного поиска, затем щелкните стрелку в конце панели поиска и выберите «Создать фильтр с помощью этого поиска».
Feckmore
2
Это не решает проблему для заголовков, отличных от Delivered-To? (Произнесите поиск по заголовкам «Автоматически отправлено» или «Приоритет»)
Герт ван ден Берг
2
Довольно неприятно, что текст заголовка «Delivered-To:», в то время как поле «has» удаляет «-», чтобы выдать «deliveryto:».
Джеймс Бауэри
36

Вот список всех продвинутых операторов:

от:
до:
предмета:
ИЛИ
- (дефис)
этикетки:
есть: крепежный
список:
имя файл:
«» (кавычки)
()
в: где угодно
в: Входящих
в: мусоре
в: спаме
является: важно
является: звёздным
это: непрочитанным
является: читать
имеет: желтая звезда
имеет: красная звезда
имеет: оранжевая звезда
имеет: зеленая звезда
имеет: синяя звезда
имеет: фиолетовая звезда
имеет: красный удар
имеет: оранжевый-гильмет
имеет: желтый удар
имеет: зеленый- check
имеет: blue-info
имеет: purple-question
cc:
bcc:
после:
до:
старше:
новее : старше:
чем:
новее_than:
есть: чат
доставлено:
круг:
имеет: круг
категория:
размер:
больше:
меньше:
+ (знак плюс)
rfc822msgid:
имеет: userlabels
имеет: nouserlabels

[ источник ]

Джаред Апдайк
источник
Благодарю. Даже их страницы затрудняют определение, будет ли оператор NOT -работать с подстановочными адресами, например: -*@mydomain.comв To:поле
Marcos
31
  1. перейдите на https://script.google.com и создайте новый скрипт Google Apps.

новый скрипт приложений Google.

  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)
  }
}
dnozay
источник
11
Моя недоказанная внутренняя реакция заключается в том, что в Google будет что-то на месте, чтобы пользователи не зацикливались на еженедельно загруженном контенте электронной почты. Поэтому я бы посоветовал заменить "var threads = GmailApp.getInboxThreads ();" с "var threads = GmailApp.search (" newer_than: 1h ");"
Рик
Я использую var MyEmails = GmailApp.search("is:unread in:inbox");для того, чтобы искать все письма в ящике, которые еще не прочитаны
Ronen Ariely
@Rick - я написал скрипт, который использует интерфейс IMAP для обхода всех 13 + ГБ в моей учетной записи Gmail. «Меня не удивит, если script.google.com разрешит это.
Брофа
1

Вы можете использовать deliveredto:оператор в Has the wordsполе при создании фильтра, как указано @mvime. Однако, не все поставщики услуг электронной почты добавить Delivered-toв заголовок электронной почты, так что более надежный способ направить you@oldemail.comк you+oldemail@gmail.comи фильтровать deliveredto:(you+oldemail@gmail.com).

Пэн Бай
источник