إدارة إعادة توجيه الرسائل الإلكترونية

يوضّح هذا المستند كيفية ضبط إعدادات إعادة توجيه الرسائل الإلكترونية في Gmail API.

يمكنك استخدام مصدر settings لضبط إعدادات إعادة التوجيه لأحد الحسابات. لاستخدام عنوان بريد إلكتروني كعنوان بريد إلكتروني لإعادة التوجيه، يجب أن يستوفي أحد المعايير التالية:

  • تمّ التحقّق من عنوان البريد الإلكتروني. لمزيد من المعلومات، يُرجى الاطّلاع على المقالة إنشاء عناوين إعادة التوجيه وتأكيدها.
  • ينتمي عنوان البريد الإلكتروني إلى النطاق نفسه الذي ينتمي إليه المُرسِل.
  • ينتمي عنوان البريد الإلكتروني إلى نطاق فرعي ضمن النطاق نفسه الذي ينتمي إليه المُرسِل.
  • ينتمي عنوان البريد الإلكتروني إلى اسم نطاق مستعار تم ضبطه كجزء من حساب Google Workspace نفسه.

إذا لم يستوفِ عنوان البريد الإلكتروني لإعادة التوجيه إحدى هذه القواعد، ستفشل عملية إعداد إعادة التوجيه باستخدام واجهة برمجة التطبيقات.

لمعرفة كيفية إنشاء، عرض، الحصول على، أو حذف عناوين إعادة التوجيه، يُرجى الاطّلاع على الطرق في settings.forwardingAddresses المصدر.

لمعرفة كيفية الحصول على أو تعديل إعدادات إعادة التوجيه التلقائي، يُرجى الاطّلاع على الطرق في مصدر settings.

إنشاء عناوين إعادة التوجيه وتأكيدها

يجب إنشاء عناوين إعادة التوجيه قبل استخدامها. في بعض الحالات، يجب على المستخدمين أيضًا تأكيد ملكية العنوان.

إذا طلبت Gmail من المستخدم تأكيد عنوان إعادة التوجيه، يتم عرض العنوان مع VerificationStatus بقيمة pending. ويتم تلقائيًا إرسال رسالة تأكيد إلى عنوان البريد الإلكتروني الوجهة. على مالك عنوان البريد الإلكتروني إكمال عملية التأكيد قبل أن يتمكّن من استخدامه.

تكون حالة التأكيد لعناوين إعادة التوجيه التي لا تتطلّب التأكيد هي accepted.

تفعيل إعادة التوجيه التلقائي

يمكنك اختيار إعادة توجيه جميع رسائلك الجديدة إلى عنوان بريد إلكتروني آخر.

لإجراء ذلك، اتّصِل بطريقة updateAutoForwarding لتفعيل إعادة التوجيه التلقائي لأحد الحسابات. يتطلّب الاتصال عنوان إعادة توجيه مسجّلاً ومؤكّدًا وإجراءً يتم اتخاذه بشأن الرسائل المعاد توجيهها. يتم ضبط هذه الإعدادات باستخدام عنصر AutoForwarding.

يُستخدَم الحقل disposition لضبط حالة الرسالة بعد إعادة توجيهها. القيمة التلقائية هي dispositionUnspecified، ولكن لا يمكنك ضبط هذا الحقل على dispositionUnspecified.

تعرض عيّنات التعليمات البرمجية التالية كيفية تفعيل إعادة التوجيه التلقائي ثم نقل الرسائل المعاد توجيهها إلى المهملات:

جافا

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 المستلَمة إلى الحساب الوجهة. لإعادة توجيه رسائل معيّنة، يمكنك إعداد فلتر لإنشاء قواعد تعيد توجيه الرسائل استجابةً لسمات الرسالة أو محتواها.

لإعادة توجيه الرسائل إلى حسابات متعددة، يمكنك إنشاء فلتر لكل عنوان بريد إلكتروني مُعاد توجيهه.