مدیریت فیلترها

می‌توانید از فیلترها برای پیکربندی قوانین فیلترینگ پیشرفته برای یک حساب استفاده کنید. فیلترها می توانند به طور خودکار برچسب ها را اضافه یا حذف کنند یا ایمیل ها را به نام مستعار تأیید شده بر اساس ویژگی ها یا محتوای پیام دریافتی ارسال کنند.

برای اطلاعات در مورد نحوه ایجاد ، فهرست کردن ، دریافت یا حذف فیلترها، به مرجع فیلترها مراجعه کنید.

معیارهای تطبیق

می توانید پیام ها را بر اساس ویژگی هایی مانند فرستنده، تاریخ موضوع، اندازه و محتوای پیام فیلتر کنید. هر پرس و جوی با استفاده از نحو جستجوی پیشرفته جیمیل نیز می تواند در یک فیلتر استفاده شود. به عنوان مثال، الگوهای رایج فیلتر عبارتند از:

فیلتر کنید مسابقات
criteria.from='sender@example.com' همه ایمیل‌ها از sender@example.com
criteria.size=10485760
criteria.sizeComparison='larger'
همه ایمیل های بزرگتر از 10 مگابایت
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>'] نامه را با یک برچسب تعریف شده توسط کاربر تگ کنید. فقط یک برچسب تعریف شده توسط کاربر در هر فیلتر مجاز است.

مثال ها

مثال زیر یک مثال کامل تر است که نشان می دهد چگونه پیام ها را از یک لیست پستی برچسب گذاری و بایگانی کنید.

جاوا

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;
  }
}

پایتون

gmail/snippet/settings snippets/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()