ניהול מסננים

אפשר להשתמש במסננים כדי להגדיר כללי סינון מתקדם לחשבון. באמצעות מסננים אפשר להוסיף או להסיר תוויות באופן אוטומטי, או להעביר אימיילים לכינויים מאומתים בהתאם למאפיינים או לתוכן של ההודעה הנכנסת.

למידע נוסף על יצירה, רשימה, הורדה או מחיקה של מסננים, ראו מסננים.

קריטריונים תואמים

אפשר לסנן הודעות לפי מאפיינים כמו השולח, תאריך הנושא, הגודל ותוכן ההודעה. אפשר להשתמש גם במסנן, בכל שאילתה שמשתמשת בתחביר של חיפוש מתקדם ב-Gmail. לדוגמה, דפוסי סינון נפוצים כוללים:

סינון תואם את:
criteria.from='sender@example.com' כל הודעות האימייל מאת sender@example.com
criteria.size=10485760
criteria.sizeComparison='larger'
כל הודעות האימייל שגודלן עולה על 10MB
criteria.hasAttachment=true כל הודעות האימייל שכוללות קובץ מצורף
criteria.subject='[People with Pets]' כל האימיילים עם המחרוזת [People with Pets] בנושא
criteria.query='"my important project"' כל הודעות האימייל שמכילות את המחרוזת my important project
criteria.negatedQuery='"secret knock"' כל האימיילים שלא מכילים את המחרוזת secret knock

אם במסנן יש כמה קריטריונים, ההודעה צריכה לעמוד בכל הקריטריונים של המסנן.

פעולות

אפשר להחיל פעולה על הודעות שתואמות לקריטריוני הסינון. ניתן להעביר הודעות לכתובת אימייל מאומתת, או להוסיף או להסיר תוויות.

אפשר להוסיף או להסיר תוויות כדי לשנות את המיקום של הודעת האימייל. לדוגמה, כמה מהפעולות הנפוצות כוללות:

פעולה השפעה
action.removeLabelIds=['INBOX'] העברת האימייל לארכיון (דילוג על תיבת הדואר הנכנס)
action.removeLabelIds=['UNREAD'] סימון ש'כבר קראתי'
action.removeLabelIds=['SPAM'] אף פעם לא לסמן כספאם
action.removeLabelIds=['IMPORTANT'] אף פעם לא לסמן כחשוב
action.addLabelIds=['IMPORTANT'] סימון כחשובה
action.addLabelIds=['TRASH'] מוחקים את הודעת האימייל.
action.addLabelIds=['STARRED'] סימון בכוכב
action.addLabelIds=['<user label id>'] יש לתייג את האימייל בתווית שהוגדרה על ידי המשתמש. לכל מסנן יכולה להיות רק תווית אחת בהגדרת המשתמש.

דוגמאות

הדוגמה הבאה היא מלאה יותר, שמראה איך להוסיף תוויות להודעות מרשימת תפוצה ולהעביר אותן לארכיון.

Java

gmail/snippets/src/main/java/CreateFilter.java
import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.gmail.Gmail;
import com.google.api.services.gmail.GmailScopes;
import com.google.api.services.gmail.model.Filter;
import com.google.api.services.gmail.model.FilterAction;
import com.google.api.services.gmail.model.FilterCriteria;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Arrays;

/* Class to demonstrate the use of Gmail Create Filter API */
public class CreateFilter {
  /**
   * Create a new filter.
   *
   * @param labelId - ID of the user label to add
   * @return the created filter id, {@code null} otherwise.
   * @throws IOException - if service account credentials file not found.
   */
  public static String createNewFilter(String labelId) throws IOException {
        /* Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
            guides on implementing OAuth2 for your application. */
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(GmailScopes.GMAIL_SETTINGS_BASIC,
            GmailScopes.GMAIL_LABELS);
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials);

    // Create the gmail API client
    Gmail service = new Gmail.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Gmail samples")
        .build();

    try {
      // Filter the mail from sender and archive them(skip the inbox)
      Filter filter = new Filter()
          .setCriteria(new FilterCriteria()
              .setFrom("gduser2@workspacesamples.dev"))
          .setAction(new FilterAction()
              .setAddLabelIds(Arrays.asList(labelId))
              .setRemoveLabelIds(Arrays.asList("INBOX")));

      Filter result = service.users().settings().filters().create("me", filter).execute();
      // Prints the new created filter ID
      System.out.println("Created filter " + result.getId());
      return result.getId();
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      GoogleJsonError error = e.getDetails();
      if (error.getCode() == 403) {
        System.err.println("Unable to create filter: " + e.getDetails());
      } else {
        throw e;
      }
    }
    return null;
  }
}

Python

gmail/snippet/settings קטעי קוד/create_filter.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def create_filter():
  """Create a filter.
  Returns: Draft object, including filter id.

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create gmail api client
    service = build("gmail", "v1", credentials=creds)

    label_name = "IMPORTANT"
    filter_content = {
        "criteria": {"from": "gsuder1@workspacesamples.dev"},
        "action": {
            "addLabelIds": [label_name],
            "removeLabelIds": ["INBOX"],
        },
    }

    # pylint: disable=E1101
    result = (
        service.users()
        .settings()
        .filters()
        .create(userId="me", body=filter_content)
        .execute()
    )
    print(f'Created filter with id: {result.get("id")}')

  except HttpError as error:
    print(f"An error occurred: {error}")
    result = None

  return result.get("id")


if __name__ == "__main__":
  create_filter()