

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置自定义域以处理打开和单击跟踪
<a name="configure-custom-open-click-domains"></a>

当您使用[事件发布](monitor-using-event-publishing.md)来捕获打开和单击事件时，Amazon SES 将对您发送的电子邮件进行细微更改。为了捕获打开事件，SES 在通过 SES 发送的每封电子邮件中添加 1 像素 x 1 像素的透明 GIF 图像，其中包括每封电子邮件的唯一文件名，并托管在 SES 运营的服务器上；当图像被下载时，SES 可以准确地指明哪封邮件已由谁打开。

默认情况下，此像素将插入到电子邮件底部；不过，一些电子邮件提供商的应用程序会在电子邮件超出特定大小时截断电子邮件预览，并且可能会提供用于查看邮件的其余部分的链接。在此场景中，SES 像素跟踪图像不会加载，并且会摆脱您试图跟踪的打开率。要解决此问题，您可以选择将像素置于电子邮件的开头或其他任何位置，方法是将 `{{ses:openTracker}}` 占位符插入电子邮件正文中。在 SES 收到带占位符的邮件后，它将替换为打开跟踪像素图像。

**重要**  
SES 将在发送时移除任何超过一个的 `{{ses:openTracker}}` 占位符。
如果在电子邮件模板中使用 `{{ses:openTracker}}` 占位符，请仅添加一个，因为多个占位符会导致返回 `400 BadRequestException` 错误代码。

为了捕获链接单击事件，SES 会将电子邮件中的链接替换为指向由 SES 运营的服务器的链接。这会立即将收件人重定向到其预期目标。向该服务器发出的请求的标头（包括 Cookie）总大小不得超过 8192 字节，否则将返回 `400 BadRequestException` 错误代码。

您还可以选择使用自己的域（而非 SES 拥有和运营的域），来为收件人打造更一致的体验，这意味着将删除所有 SES 指标。您可以配置多个自定义域以处理打开和单击跟踪事件。这些自定义域与配置集关联。当您使用某个配置集发送电子邮件时，如果该配置集被配置为使用自定义域，则电子邮件中的打开和单击链接将自动使用该配置集中指定的自定义域。

本节包含一些过程，用于指示如何在您拥有的服务器上设置子域，以自动将用户重定向到由 SES 运营的打开和单击跟踪服务器。设置这些域涉及到三个步骤。首先，配置子域本身，再设置一个配置集来使用自定义域，然后设置其事件目标以发布打开和单击事件。本主题包含完成所有这些步骤的过程。

但是，如果您只希望在不设置自定义域的情况下启用打开或单击跟踪，则可以直接为配置集定义事件目标以支持针对指定的事件类型（包括打开和单击事件）触发的事件发布。配置集可以具有已定义多个事件类型的多个事件目标。请参阅[创建 Amazon SES 事件目标](event-destinations-manage.md)。

## 第 1 部分：设置用于处理打开和单击链接重定向的域
<a name="configure-custom-open-click-domain"></a>

设置重定向域的具体过程因您的 Web 托管提供商（和您的内容传输网络，如果您使用了 HTTPS 服务器）而异。以下各节中的过程提供了一般性指导，而不是具体步骤。

### 选项 1：配置 HTTP 域
<a name="configure-custom-open-click-domain-http"></a>

如果打算使用 HTTP 域处理打开和单击链接（与 HTTPS 域相对），则配置子域的过程仅涉及几个步骤。

**注意**  
如果您设置了使用 HTTP 协议的自定义域，并且发送了包含使用 HTTPS 协议的链接的电子邮件，则您的客户在单击您的电子邮件中的链接时可能会看到一条警告消息。如果您计划发送包含使用 HTTPS 协议的链接的电子邮件，则应使用 HTTPS 域来处理单击跟踪事件。

**设置用于处理打开和单击链接的 HTTP 子域**

1. 创建用于打开和单击跟踪链接的子域。SES 建议该子域专门用于处理这些链接，并 AWS 区域 为您要跟踪的每封电子邮件创建一个子域名。

1. 验证用于 SES 的子域。有关更多信息，请参阅 [创建域身份](creating-identities.md#verify-domain-procedure)。

1. 在子域的 DNS 设置中添加新的 CNAME 记录，以将请求重定向到 SES 跟踪域。您重定向到的地址必须与您的自定义子域 AWS 区域 相同。
   + 使用中的[跟踪域名表](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_tracking_domains) AWS 一般参考 ，选择与您的自定义域名位于同一区域的跟踪域。
**注意**  
您对子域的 DNS 记录所做的更改可能需要几分钟才能生效，具体取决于您的 Web 托管提供商。您的 Web 托管提供商或 IT 组织可能提供有关这些延迟的其他信息。

### 选项 2：配置 HTTPS 域
<a name="configure-custom-open-click-domain-https"></a>

您还可以使用 HTTPS 域来跟踪链接打开和链接单击次数。要设置用于跟踪打开和链接单击次数的 HTTPS 域，除了[设置 HTTP 域](#configure-custom-open-click-domain-http)所需的步骤之外，还必须执行一些额外步骤。

**设置处理打开和单击链接的 HTTPS 子域**

1. 创建用于打开和单击跟踪链接的子域。SES 建议该子域专门用于处理这些链接，并 AWS 区域 为您要跟踪的每封电子邮件创建一个子域名。

1. 验证用于 SES 的子域。有关更多信息，请参阅 [创建域身份](creating-identities.md#verify-domain-procedure)。

1. 使用内容分发网络 (CDN)（例如 [Amazon](https://aws.amazon.com/cloudfront)）创建新账户 CloudFront，请参阅[基本 CloudFront 分发入门](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.SimpleDistribution.html)。

1.  将 CDN 配置为作为 SES 跟踪域的源，例如 `r.us-east-1.awstrack.me`。CDN 必须指向与您的自定义域名位于同一区域的 AWS 跟踪域。CDN 必须将请求者提供的 `Host` 标头传递给源，有关更多信息，请参阅此 [AWS re:Post 文章](https://repost.aws/knowledge-center/configure-cloudfront-to-forward-headers)以了解更多信息。
   + 使用中的[跟踪域名表](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_tracking_domains) AWS 一般参考 ，选择与您的自定义域名位于同一区域的跟踪域。

1. 如果你使用 Route 53 来管理你的域名和 CloudFront你的 CDN 的 DNS 配置，请在 Route 53 中创建一个引用你的 CloudFront分配的别名记录（例如 *d111111abcdef8.cloud* front.net）。有关更多信息，请参阅《Amazon Route 53 开发人员指南》**中的[使用 Amazon Route 53 控制台创建记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)。

   否则，在您的子域的 DNS 配置中，添加一个 CNAME 记录以引用您的 CDN 的地址。

1. 从可信证书颁发机构获取 SSL 证书。该证书应涵盖在步骤 1 中创建的子域以及在步骤 3-5 中配置的 CDN。将证书上传到 CDN。

1. 您可以使用以下 curl 命令来验证新创建的自定义域是否使用了正确的区域和 HTTPS 协议。在以下示例中，除了您的域名之外，其他所有内容均为字面意思：

   ```
   curl --head https://custom.domain.com/favicon.ico
   ```

   返回的响应如以下示例所示：

   ```
   (python-sdk-test) jdoe@12a34567b89c BaconRedirectService % curl --head https://custom.domain.com/favicon.ico
   HTTPS/1.1 200 OK
   x-amz-ses-region: us-east-1
   x-amz-ses-request-protocol: https
   Content-Type: image/x-icon
   Transfer-Encoding: chunked
   Date: Fri, 30 Aug 2024 13:50:14 GMT
   ```

   此代码包含以下属性：
   + `x-amz-ses-region` 标头值是收到请求的 SES 区域。
   + `x-amz-ses-request-protocol` 标头值是 CDN 和 SES 之间的请求中标头所使用的协议。

   如果您的设置正确，则该区域应反映您创建域所在的区域，协议应为 HTTPS。

## 第 2 部分：通过配置集指定您的自定义重定向域和 HTTPS 策略
<a name="configure-custom-open-click-domain-config-set"></a>

在将您的域配置为处理打开和单击跟踪重定向后，您必须在配置集中指定自定义域和 HTTPS 策略。

当您使用某个配置集发送电子邮件时，如果该配置集被配置为使用自定义重定向域，则电子邮件中的打开和单击链接将自动使用该配置集中指定的自定义域和 HTTPS 策略。

您可以使用 SES 控制台或 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSet.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSet.html) v2 API 操作来完成此过程。

**使用控制台指定自定义重定向域和 HTTPS 策略**
+ 创建或编辑配置集时，使用[创建配置集](creating-configuration-sets.md)步骤 4 中的[跟踪选项](creating-configuration-sets.md#create-config-set-step-4)，来指定您的自定义重定向域和 HTTPS 策略选项。

**要指定自定义重定向域和 HTTPS 策略，请使用 AWS CLI**  
您可以在 SES API v2 中使用 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSet.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSet.html) 操作，并使用 `TrackingOptions` 属性来指定您的自定义重定向域和 HTTPS 策略。您可以从调用此操作， AWS CLI 如以下示例所示。
+ 在要发送和跟踪电子邮件 AWS 区域 的地点中创建配置集：

  ```
  aws sesv2 create-configuration-set --cli-input-json file://create.json
  ```
+ 在此示例中，输入文件使用 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_TrackingOptions.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_TrackingOptions.html) 属性的参数，`CustomRedirectDomain` 指定用于跟踪打开和单击链接的自定义域，`HttpsPolicy` 指定一个 HTTPS 策略选项：

  ```
  {
      "ConfigurationSetName": "my-config-set",
      "TrackingOptions": {
          "CustomRedirectDomain": "marketing.example.com",
          "HttpsPolicy": "REQUIRE"
      },
      "SendingOptions": {
          "SendingEnabled": true
      }
  }
  ```

  对于 `HttpsPolicy` 参数，可以指定以下值来设置自定义重定向域的打开和单击跟踪链接的协议：
  + `OPTIONAL`：（默认行为）打开跟踪链接将使用 HTTP 进行包装。单击跟踪链接将使用链接的原始协议进行包装。
  + `REQUIRE`：打开和单击跟踪链接都将使用 HTTPS 进行包装。
  + `REQUIRE_OPEN_ONLY`：打开跟踪链接将使用 HTTPS 进行包装。单击跟踪链接将使用链接的原始协议进行包装。

## 第 3 部分：通过配置集指定打开和单击事件类型
<a name="configure-open-click-event-types"></a>

在上一步的配置集中指定自定义域和 HTTPS 策略后，您必须通过配置集指定要在事件目标中跟踪的 open and/or click 事件类型。

您可以使用 SES 控制台或 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSetEventDestination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateConfigurationSetEventDestination.html) v2 API 操作来完成此过程。

**要使用控制台选择打开 and/or 点击事件类型**
+ 创建或修改事件目标时，使用[创建事件目标](event-destinations-manage.md#event-destination-add)步骤 6 中的[打开和单击跟踪](event-destinations-manage.md#select-event-types-step)来指定事件类型。