Mengelola penerusan email

Dokumen ini menjelaskan cara mengonfigurasi penerusan email di Gmail API.

Anda dapat menggunakan resource settings untuk mengonfigurasi penerusan untuk akun. Agar alamat email dapat digunakan sebagai alamat email penerusan, alamat email tersebut harus memenuhi salah satu kriteria berikut:

  • Alamat email telah diverifikasi. Untuk mengetahui informasi selengkapnya, lihat Membuat dan memverifikasi alamat penerusan.
  • Alamat email berasal dari domain yang sama dengan pengirim.
  • Alamat email tersebut adalah subdomain dalam domain yang sama dengan pengirim.
  • Alamat email tersebut adalah milik alias domain yang dikonfigurasi sebagai bagian dari akun Google Workspace yang sama.

Jika alamat email penerusan tidak mematuhi salah satu aturan ini, penyiapan penerusan menggunakan API akan gagal.

Untuk mengetahui informasi tentang cara membuat, mencantumkan, mendapatkan, atau menghapus alamat penerusan, lihat metode di resource settings.forwardingAddresses.

Untuk mengetahui informasi tentang cara mendapatkan atau memperbarui setelan penerusan otomatis, lihat metode di resource settings.

Membuat dan memverifikasi alamat penerusan

Anda harus membuat alamat penerusan sebelum menggunakannya. Dalam beberapa kasus, pengguna juga harus memverifikasi kepemilikan alamat.

Jika Gmail mewajibkan verifikasi pengguna untuk alamat penerusan, alamat akan ditampilkan dengan VerificationStatus pending. Pesan verifikasi akan otomatis dikirim ke alamat email target. Pemilik alamat email harus menyelesaikan proses verifikasi sebelum alamat email tersebut dapat digunakan.

Alamat penerusan yang tidak memerlukan verifikasi memiliki status verifikasi accepted.

Mengaktifkan penerusan otomatis

Anda dapat memilih untuk meneruskan semua pesan baru ke alamat email lain.

Untuk melakukannya, panggil metode updateAutoForwarding untuk mengaktifkan penerusan otomatis untuk akun. Panggilan ini memerlukan alamat penerusan yang terdaftar dan terverifikasi serta tindakan yang akan dilakukan pada pesan yang diteruskan. Setelan ini ditetapkan menggunakan objek AutoForwarding.

Kolom disposition digunakan untuk menyetel status pesan setelah pesan diteruskan. Nilai defaultnya adalah dispositionUnspecified, tetapi Anda tidak dapat menetapkan kolom ini ke dispositionUnspecified.

Contoh kode berikut menunjukkan cara mengaktifkan penerusan otomatis, lalu memindahkan pesan yang diteruskan ke sampah:

Java

gmail/snippets/src/main/java/EnableForwarding.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.AutoForwarding;
import com.google.api.services.gmail.model.ForwardingAddress;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;

/* Class to demonstrate the use of Gmail Enable Forwarding API */
public class EnableForwarding {
  /**
   * Enable the auto-forwarding for an account.
   *
   * @param forwardingEmail - Email address of the recipient whose email will be forwarded.
   * @return forwarding id and metadata, {@code null} otherwise.
   * @throws IOException - if service account credentials file not found.
   */
  public static AutoForwarding enableAutoForwarding(String forwardingEmail) 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_SHARING);
    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 {
      // Enable auto-forwarding and move forwarded messages to the trash
      ForwardingAddress address = new ForwardingAddress()
          .setForwardingEmail(forwardingEmail);
      ForwardingAddress createAddressResult = service.users().settings().forwardingAddresses()
          .create("me", address).execute();
      if (createAddressResult.getVerificationStatus().equals("accepted")) {
        AutoForwarding autoForwarding = new AutoForwarding()
            .setEnabled(true)
            .setEmailAddress(address.getForwardingEmail())
            .setDisposition("trash");
        autoForwarding =
            service.users().settings().updateAutoForwarding("me", autoForwarding).execute();
        System.out.println(autoForwarding.toPrettyString());
        return autoForwarding;
      }
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      GoogleJsonError error = e.getDetails();
      if (error.getCode() == 403) {
        System.err.println("Unable to enable forwarding: " + e.getDetails());
      } else {
        throw e;
      }
    }
    return null;
  }
}

Python

gmail/snippet/settings snippets/enable_forwarding.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def enable_forwarding():
  """Enable email forwarding.
  Returns:Draft object, including forwarding id and result meta data.

  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)

    address = {"forwardingEmail": "gduser1@workspacesamples.dev"}

    # pylint: disable=E1101
    result = (
        service.users()
        .settings()
        .forwardingAddresses()
        .create(userId="me", body=address)
        .execute()
    )
    if result.get("verificationStatus") == "accepted":
      body = {
          "emailAddress": result.get("forwardingEmail"),
          "enabled": True,
          "disposition": "trash",
      }
      # pylint: disable=E1101
      result = (
          service.users()
          .settings()
          .updateAutoForwarding(userId="me", body=body)
          .execute()
      )
      print(f"Forwarding is enabled : {result}")

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

  return result


if __name__ == "__main__":
  enable_forwarding()

Untuk menonaktifkan penerusan otomatis, panggil metode updateAutoForwarding dan tetapkan kolom enabled pada objek AutoForwarding ke false.

Meneruskan pesan tertentu

Penerusan otomatis mengirim semua pesan Gmail yang diterima ke akun target. Untuk meneruskan pesan tertentu, siapkan filter untuk membuat aturan yang meneruskan pesan sebagai respons terhadap atribut atau konten pesan.

Untuk meneruskan pesan ke beberapa akun, buat filter untuk setiap alamat email penerusan.