web-dev-qa-db-ja.com

From、To、Subject以外のヘッダーで機能するGmailフィルターを作成することはできますか?

古いメールアドレスの1つをGmailに転送しました。古いアドレスへのメールがGmailで常に適切にラベル付けされるようにフィルターを作成したいと思います。

そのアドレスを含む "To:"を使用してGmailフィルターを作成できますが、そのアドレスへのallメールはキャッチされず、明示的にアドレス指定されたメールのみがキャッチされます。多くの場合、他の誰かが明示的な受信者であるスパムがあり、私の古いアドレスは単にBccされました。 「To:」フィルターは機能しません。

likeがしたいことは、「Delivered-To:」ヘッダーでフィルターをかけることです。 Gmailでそれは可能ですか、それともFrom、To、Subjectの3つの標準オプションに固執していますか?

102
Chris W. Rea

はい、配信先でフィルタリングできます。 deliveredto:[email protected]フィールドにhas the wordsを持つ新しいフィルターを作成するだけです。

67
mvime
35
Jared Updike
  1. https://script.google.com に移動して、新しいGoogle Appsスクリプトを作成します

new google apps script.

  1. [Gmail用のスクリプトを作成]オプションを選択します

    • これにより、スクリプトプロジェクトが作成されます
    • これにより、Code.gsというスクリプトが作成されます
    • これにより、processInboxという名前のサンプル関数が作成されます。
  2. プロジェクトを保存する

  3. スクリプトをカスタマイズし、満足するまでテストする
  4. 「カスタムプロジェクトのトリガー」ボタンを見つける

    custom trigger button

    • これにより、タイマーでスクリプトを実行できます(たとえば、毎日、または毎分

例:

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)
  }
}
31
dnozay

@mvimeが示すように、フィルターを作成するときに、deliveredto:フィールドでHas the words演算子を使用できます。ただし、すべての電子メールプロバイダーがDelivered-toを電子メールヘッダーに追加するわけではないため、[email protected][email protected]に転送し、deliveredto:([email protected])でフィルタリングする方がより信頼性の高い方法です。

0
Peng Bai