Управление пересылкой электронной почты

В этом документе объясняется, как настроить пересылку электронной почты в API Gmail.

Для настройки переадресации писем для учетной записи можно использовать раздел settings . Чтобы использовать адрес электронной почты для переадресации, он должен соответствовать одному из следующих критериев:

  • Адрес электронной почты подтвержден. Для получения дополнительной информации см. раздел «Создание и проверка адресов пересылки» .
  • Адрес электронной почты принадлежит тому же домену, что и отправитель.
  • Адрес электронной почты принадлежит поддомену в том же домене, что и отправитель.
  • Адрес электронной почты принадлежит псевдониму домена, настроенному в рамках той же учетной записи Google Workspace.

Если адрес электронной почты для пересылки не соответствует одному из этих правил, настройка пересылки с помощью API завершится неудачей.

Информацию о том, как создавать , перечислять , получать или удалять адреса переадресации, см. в методах ресурса settings.forwardingAddresses .

Информацию о том, как получить или обновить настройки автоматической переадресации, см. в разделе «Методы» ресурса settings .

Создайте и проверьте адреса переадресации.

Перед использованием адресов переадресации необходимо их создать . В некоторых случаях пользователям также необходимо подтвердить право собственности на адрес.

Если Gmail требует подтверждения пользователя для адреса пересылки, API возвращает адрес со VerificationStatus « pending . Gmail автоматически отправляет проверочное сообщение на целевой адрес электронной почты. Владелец адреса электронной почты должен пройти процесс подтверждения, прежде чем вы сможете его использовать.

Адреса переадресации, не требующие подтверждения, имеют статус подтверждения « accepted .

Включить автоматическую пересылку

Вы можете настроить пересылку всех новых сообщений на другой адрес электронной почты.

Для этого вызовите метод updateAutoForwarding , чтобы включить автоматическую пересылку для учетной записи. Для вызова требуется зарегистрированный и подтвержденный адрес пересылки, а также действие, которое необходимо выполнить с пересланными сообщениями. Установите эти значения в объекте AutoForwarding .

Поле disposition используется для установки статуса сообщения после его пересылки. Хотя значение по умолчанию — dispositionUnspecified , вы не можете установить для этого поля значение dispositionUnspecified .

Приведенные ниже примеры кода показывают, как включить автоматическую пересылку сообщений, а затем переместить пересланные сообщения в корзину:

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

Чтобы отключить автоматическую пересылку, вызовите метод updateAutoForwarding и установите поле enabled в объекте AutoForwarding в значение false .

Пересылать конкретные сообщения

Автоматическая пересылка отправляет все полученные сообщения Gmail на целевой аккаунт. Для пересылки определенных сообщений настройте фильтр , чтобы создать правила, которые будут пересылать сообщения в зависимости от атрибутов или содержимого сообщения.

Для пересылки сообщений на несколько учетных записей создайте фильтр для каждого адреса электронной почты, на который будет осуществляться пересылка.