Zarządzanie przekierowaniem poczty e-mail

Z tego dokumentu dowiesz się, jak skonfigurować przekierowanie poczty e-mail w interfejsie Gmail API.

Możesz użyć zasobu settings, aby skonfigurować przekazywanie na koncie. Aby adres e-mail mógł być używany jako adres e-mail do przekazywania, musi spełniać jedno z tych kryteriów:

  • Adres e-mail jest zweryfikowany. Więcej informacji znajdziesz w artykule Tworzenie i weryfikowanie adresów przekazywania.
  • Adres e-mail należy do tej samej domeny co nadawca.
  • Adres e-mail należy do subdomeny w tej samej domenie co nadawca.
  • Adres e-mail należy do aliasu domeny skonfigurowanego w ramach tego samego konta Google Workspace.

Jeśli adres e-mail do przekazywania nie jest zgodny z żadną z tych reguł, skonfigurowanie przekazywania za pomocą interfejsu API nie powiedzie się.

Informacje o tym, jak tworzyć, wyświetlać, pobierać lub usuwać adresy przekazywania, znajdziesz w metodach w tym settings.forwardingAddresses artykule.

Informacje o tym, jak uzyskać lub zaktualizować ustawienia automatycznego przekazywania, znajdziesz w metodach w zasobie settings.

Tworzenie i weryfikowanie adresów do przekazywania dalej

Zanim zaczniesz korzystać z adresów przekierowania, musisz je utworzyć. W niektórych przypadkach użytkownicy muszą też potwierdzić własność adresu.

Jeśli Gmail wymaga weryfikacji użytkownika w przypadku adresu do przekazywania dalej, adres jest zwracany z wartością VerificationStatus pending. Na docelowy adres e-mail zostanie automatycznie wysłana wiadomość weryfikacyjna. Właściciel adresu e-mail musi przejść proces weryfikacji, zanim będzie można go używać.

Adresy przekazywania, które nie wymagają weryfikacji, mają stan weryfikacji accepted.

Włączanie automatycznego przekazywania dalej

Na inny adres e-mail możesz przekazywać dalej wszystkie nowe wiadomości.

Aby to zrobić, wywołaj metodę updateAutoForwarding w celu włączenia automatycznego przekazywania na koncie. Wymaga to zarejestrowanego i zweryfikowanego adresu do przekazywania dalej oraz działania, które ma być wykonywane w przypadku przekazywanych wiadomości. Ustawia się je za pomocą obiektu AutoForwarding.

Pole disposition służy do ustawiania stanu wiadomości po jej przekazaniu. Wartość domyślna to dispositionUnspecified, ale nie możesz ustawić tego pola na dispositionUnspecified.

Poniższe przykłady kodu pokazują, jak włączyć automatyczne przekazywanie, a następnie przenieść przekazane wiadomości do kosza:

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

Aby wyłączyć automatyczne przekazywanie, wywołaj metodę updateAutoForwarding i ustaw pole enabled w obiekcie AutoForwarding na false.

Przekazywanie konkretnych wiadomości

Automatyczne przekazywanie dalej wysyła wszystkie odebrane wiadomości z Gmaila na konto docelowe. Aby przekazywać dalej określone wiadomości, skonfiguruj filtr, aby utworzyć reguły, które przekazują wiadomości dalej w odpowiedzi na atrybuty lub treść wiadomości.

Aby przekazywać wiadomości na wiele kont, utwórz filtr dla każdego adresu e-mail, na który chcesz przekazywać wiadomości.