E-posta yönlendirmeyi yönetme

Bu belgede, Gmail API'de e-posta yönlendirmenin nasıl yapılandırılacağı açıklanmaktadır.

Bir hesap için yönlendirmeyi yapılandırmak üzere settings kaynağını kullanabilirsiniz. Bir e-posta adresinin yönlendirme e-posta adresi olarak kullanılabilmesi için aşağıdaki ölçütlerden birini karşılaması gerekir:

  • E-posta adresi doğrulanmış olmalıdır. Daha fazla bilgi için Yönlendirme adresleri oluşturma ve doğrulama başlıklı makaleyi inceleyin.
  • E-posta adresi, gönderenle aynı alana ait olmalıdır.
  • E-posta adresi, gönderenin alanıyla aynı alandaki bir alt alana aittir.
  • E-posta adresi, aynı Google Workspace hesabının parçası olarak yapılandırılmış bir alan takma adına ait.

Yönlendirme e-posta adresi bu kurallardan birine uymuyorsa API kullanılarak yönlendirme ayarlanamaz.

Yönlendirme adreslerini oluşturma, listeleme, alma veya silme hakkında bilgi edinmek için settings.forwardingAddresses kaynağındaki yöntemlere bakın.

Otomatik yönlendirme ayarlarını alma veya güncelleme hakkında bilgi edinmek için settings kaynağındaki yöntemlere bakın.

Yönlendirme adresleri oluşturma ve doğrulama

Yönlendirme adreslerini kullanmadan önce oluşturmanız gerekir. Bazı durumlarda kullanıcıların adresin sahipliğini de doğrulaması gerekir.

Gmail, yönlendirme adresi için kullanıcı doğrulaması gerektiriyorsa adres, pending VerificationStatus ile birlikte döndürülür. Hedef e-posta adresine otomatik olarak bir doğrulama mesajı gönderilir. E-posta adresinin sahibi, kullanılabilmesi için doğrulama sürecini tamamlamalıdır.

Doğrulama gerektirmeyen yönlendirme adreslerinin doğrulama durumu accepted olur.

Otomatik yönlendirmeyi etkinleştirme

Yeni iletilerinizin tümünü başka bir e-posta adresine yönlendirebilirsiniz.

Bunu yapmak için bir hesapta otomatik yönlendirmeyi etkinleştirmek üzere updateAutoForwarding yöntemini çağırın. Bu işlev için kayıtlı ve doğrulanmış bir yönlendirme adresi ve yönlendirilen iletilerde yapılacak bir işlem gerekir. Bunlar, AutoForwarding nesnesi kullanılarak ayarlanır.

disposition alanı, ileti yönlendirildikten sonra ileti durumunu ayarlamak için kullanılır. Varsayılan değer dispositionUnspecified'dır ancak bu alanı dispositionUnspecified olarak ayarlayamazsınız.

Aşağıdaki kod örneklerinde, otomatik yönlendirmenin nasıl etkinleştirileceği ve yönlendirilen iletilerin nasıl çöpe taşınacağı gösterilmektedir:

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

Otomatik yönlendirmeyi devre dışı bırakmak için updateAutoForwarding yöntemini çağırın ve AutoForwarding nesnesindeki enabled alanını false olarak ayarlayın.

Belirli iletileri yönlendirme

Otomatik yönlendirme, alınan tüm Gmail iletilerini hedef hesaba gönderir. Belirli iletileri yönlendirmek için ileti özelliklerine veya içeriğine yanıt olarak iletileri yönlendiren kurallar oluşturmak üzere filtre ayarlayın.

İletileri birden fazla hesaba yönlendirmek için her yönlendirme e-posta adresi için bir filtre oluşturun.