การจัดการตัวกรอง

คุณสามารถใช้ตัวกรองเพื่อกําหนดค่ากฎการกรองขั้นสูงสําหรับบัญชี ตัวกรองสามารถเพิ่มหรือนำป้ายกำกับออกโดยอัตโนมัติ หรือส่งต่ออีเมลไปยังอีเมลแทนที่ที่ยืนยันแล้วโดยอิงตามแอตทริบิวต์หรือเนื้อหาของข้อความขาเข้า

ดูข้อมูลเกี่ยวกับวิธีcreate แสดง รับ หรือลบตัวกรองได้ที่ข้อมูลอ้างอิงเกี่ยวกับตัวกรอง

เกณฑ์การจับคู่

คุณสามารถกรองข้อความตามพร็อพเพอร์ตี้ต่างๆ เช่น ผู้ส่ง เรื่อง วันที่ ขนาด และเนื้อหาข้อความ นอกจากนี้ คุณยังใช้ข้อความค้นหาที่ใช้ไวยากรณ์การค้นหาขั้นสูงของ Gmail ในตัวกรองได้ด้วย ตัวอย่างเช่น รูปแบบตัวกรองที่พบบ่อย ได้แก่

ตัวกรอง การจับคู่
criteria.from='sender@example.com' อีเมลทั้งหมดจาก sender@example.com
criteria.size=10485760
criteria.sizeComparison='larger'
อีเมลทั้งหมดที่มีขนาดใหญ่กว่า 10 MB
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>'] ติดแท็กอีเมลด้วยป้ายกำกับที่ผู้ใช้กำหนด อนุญาตให้ใช้ป้ายกำกับที่ผู้ใช้กำหนดได้เพียง 1 รายการต่อตัวกรอง

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างที่สมบูรณ์ยิ่งขึ้นซึ่งแสดงวิธีติดป้ายกำกับและเก็บถาวรข้อความจากรายชื่ออีเมล

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 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()