Mengelola Filter

Anda dapat menggunakan Filter untuk mengonfigurasi aturan pemfilteran lanjutan untuk akun. Filter dapat otomatis menambahkan atau menghapus label atau meneruskan email ke alias terverifikasi berdasarkan atribut atau konten pesan masuk.

Untuk informasi tentang cara create, mencantumkan, mendapatkan, atau menghapus filter, lihat Referensi filter.

Kriteria pencocokan

Anda dapat memfilter pesan berdasarkan properti seperti pengirim, tanggal subjek, ukuran, dan konten pesan. Setiap kueri yang menggunakan sintaksis penelusuran lanjutan Gmail juga dapat digunakan dalam filter. Misalnya, pola filter umum meliputi:

Filter Kecocokan
criteria.from='sender@example.com' Semua email dari sender@example.com
criteria.size=10485760
criteria.sizeComparison='larger'
Semua email yang berukuran lebih dari 10 MB
criteria.hasAttachment=true Semua email dengan lampiran
criteria.subject='[People with Pets]' Semua email dengan string [People with Pets] di subjek
criteria.query='"my important project"' Semua email yang berisi string my important project
criteria.negatedQuery='"secret knock"' Semua email yang tidak berisi string secret knock

Jika ada beberapa kriteria dalam filter, pesan harus memenuhi semua kriteria agar filter dapat diterapkan.

Tindakan

Anda dapat menerapkan tindakan ke pesan yang cocok dengan kriteria filter. Pesan dapat diteruskan ke alamat email terverifikasi, atau memiliki label yang ditambahkan atau dihapus.

Anda dapat menambahkan atau menghapus label untuk mengubah disposisi email. Misalnya, beberapa tindakan umum mencakup:

Tindakan Efek
action.removeLabelIds=['INBOX'] Mengarsipkan email (melewati kotak masuk)
action.removeLabelIds=['UNREAD'] Tandai sudah dibaca
action.removeLabelIds=['SPAM'] Jangan pernah tandai sebagai spam
action.removeLabelIds=['IMPORTANT'] Jangan pernah menandai sebagai penting
action.addLabelIds=['IMPORTANT'] Tandai sebagai penting
action.addLabelIds=['TRASH'] Menghapus email
action.addLabelIds=['STARRED'] Menandai sebagai berbintang
action.addLabelIds=['<user label id>'] Beri tag pada email dengan label yang ditentukan pengguna. Hanya satu label yang ditentukan pengguna yang diizinkan per filter.

Contoh

Berikut adalah contoh yang lebih lengkap yang menunjukkan cara memberi label dan mengarsipkan pesan dari milis.

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