Quản lý tính năng chuyển tiếp email

Tài liệu này giải thích cách định cấu hình tính năng chuyển tiếp email trong Gmail API.

Bạn có thể sử dụng tài nguyên settings để định cấu hình tính năng chuyển tiếp cho một tài khoản. Để được dùng làm địa chỉ email chuyển tiếp, địa chỉ email phải đáp ứng một trong các tiêu chí sau:

  • Địa chỉ email đã được xác minh. Để biết thêm thông tin, hãy xem bài viết Tạo và xác minh địa chỉ chuyển tiếp.
  • Địa chỉ email thuộc cùng miền với người gửi.
  • Địa chỉ email thuộc một miền phụ trong cùng miền của người gửi.
  • Địa chỉ email thuộc một bí danh miền được định cấu hình trong cùng một tài khoản Google Workspace.

Nếu địa chỉ email chuyển tiếp không tuân thủ một trong các quy tắc này, thì việc thiết lập tính năng chuyển tiếp bằng API sẽ không thành công.

Để biết thông tin về cách tạo, liệt kê, lấy hoặc xoá địa chỉ chuyển tiếp, hãy xem các phương thức trên tài nguyên settings.forwardingAddresses.

Để biết thông tin về cách nhận hoặc cập nhật chế độ cài đặt chuyển tiếp tự động, hãy xem các phương thức trên tài nguyên settings.

Tạo và xác minh địa chỉ chuyển tiếp

Bạn phải tạo địa chỉ chuyển tiếp trước khi sử dụng. Trong một số trường hợp, người dùng cũng phải xác minh quyền sở hữu địa chỉ.

Nếu Gmail yêu cầu người dùng xác minh địa chỉ chuyển tiếp, thì địa chỉ đó sẽ được trả về cùng với VerificationStatus của pending. Một thư xác minh sẽ tự động được gửi đến địa chỉ email đích. Chủ sở hữu địa chỉ email phải hoàn tất quy trình xác minh trước khi có thể sử dụng địa chỉ email đó.

Những địa chỉ chuyển tiếp không yêu cầu xác minh có trạng thái xác minh là accepted.

Bật tính năng tự động chuyển tiếp

Bạn có thể chọn chuyển tiếp tất cả thư mới của mình đến một địa chỉ email khác.

Để làm việc này, hãy gọi phương thức updateAutoForwarding để bật tính năng chuyển tiếp tự động cho một tài khoản. Lệnh gọi này yêu cầu một địa chỉ chuyển tiếp đã đăng ký và xác minh, cũng như một hành động cần thực hiện đối với các thư được chuyển tiếp. Các chế độ cài đặt này được đặt bằng cách sử dụng đối tượng AutoForwarding.

Trường disposition được dùng để đặt trạng thái của thông báo sau khi thông báo được chuyển tiếp. Giá trị mặc định là dispositionUnspecified, nhưng bạn không thể đặt trường này thành dispositionUnspecified.

Các mã mẫu sau đây cho biết cách bật tính năng chuyển tiếp tự động, sau đó chuyển các thư được chuyển tiếp vào thùng rác:

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

Để tắt tính năng chuyển tiếp tự động, hãy gọi phương thức updateAutoForwarding và đặt trường enabled trên đối tượng AutoForwarding thành false.

Chuyển tiếp một số tin nhắn

Tính năng chuyển tiếp tự động sẽ gửi tất cả thư nhận được trên Gmail đến tài khoản đích. Để chuyển tiếp một số thư cụ thể, hãy thiết lập bộ lọc để tạo quy tắc chuyển tiếp thư dựa trên thuộc tính hoặc nội dung của thư.

Để chuyển tiếp thư đến nhiều tài khoản, hãy tạo bộ lọc cho từng địa chỉ email chuyển tiếp.