

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

# 使用 Amazon SES 发送授权代表身份拥有者发送电子邮件
<a name="sending-authorization-delegate-sender-tasks-email"></a>

作为委托发件人，您发送电子邮件的方式与其他 Amazon SES 发件人相同，不同的是，您需要提供身份拥有者已授权您使用的身份的 Amazon Resource Name (ARN)。当您调用 Amazon SES 来发送电子邮件时，Amazon SES 会检查您指定的身份是否包含授权您发送电子邮件的策略。

有几种不同的方法可用于指定在发送电子邮件时的身份的 ARN。您使用的方法取决于您是使用 Amazon SES API 操作还是 Amazon SES SMTP 接口来发送电子邮件。

**重要**  
要成功发送电子邮件，您必须连接到身份所有者验证身份的 AWS 区域中的 Amazon SES 终端节点。
**此外，必须先将身份所有者和委托发件人的 AWS 账户从沙箱中删除，然后两个账户才能向未经验证的地址发送电子邮件。**有关更多信息，请参阅 [请求生产访问权限（从 Amazon SES 沙盒中移出）](request-production-access.md)。
如果您被授权使用的身份在次要区域中复制，作为[全局端点](global-endpoints.md)功能的一部分：  
身份所有者应该向您提供了一个身份 ARN，其中区域参数（例如 `us-east-1`）被替换为星号 `*`，如以下示例 `arn:aws:ses:*:123456789012:identity/user@example.com` 所示。
身份所有者应该已经在主要区域和次要区域为您创建了发送授权策略。

## 使用 Amazon SES API
<a name="sending-authorization-delegate-sender-tasks-api"></a>

与任何 Amazon SES 电子邮件发件人一样，如果您通过 Amazon SES API（直接通过 HTTPS 或间接通过 AWS SDK）访问 Amazon SES，则可以在三种电子邮件发送操作中进行选择：`SendEmail``SendTemplatedEmail`、和。`SendRawEmail`[Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)详细介绍了这些参数 APIs，但我们在此处提供了发送授权参数的概述。

### SendRawEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendrawemail"></a>

如果您想要使用 `SendRawEmail` 以便可以控制电子邮件的格式，您可以通过以下两种方式之一指定委托授权身份：
+ **向 `SendRawEmail` API 传递可选参数**。下表中描述了必需参数：  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)
+ **在电子邮件中包括 X 标头**。X 标头是自定义标头，可以作为标准电子邮件标头的补充来使用（例如 From、Reply-To 或 Subject 标头）。Amazon SES 能识别三种 X 标头，您可以用它们来指定发送授权参数：
**重要**  
请不要在 DKIM 签名中包含这些 X 标头，因为它们将在发送电子邮件之前被 Amazon SES 删除。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)

  Amazon SES 会从电子邮件中删除所有 X 标头，然后再发送。如果电子邮件中包含 X 标头的多个实例，则 Amazon SES 仅使用第一个实例。

  以下示例显示了一封包含发送授权 X 标头的电子邮件：

  ```
   1. X-SES-SOURCE-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   2. X-SES-FROM-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   3. X-SES-RETURN-PATH-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   4. 
   5. From: sender@example.com
   6. To: recipient@example.com
   7. Return-Path: feedback@example.com
   8. Subject: subject
   9. Content-Type: multipart/alternative;
  10. 	boundary="----=_boundary"
  11. 
  12. ------=_boundary
  13. Content-Type: text/plain; charset=UTF-8
  14. Content-Transfer-Encoding: 7bit
  15. 
  16. body
  17. ------=_boundary
  18. Content-Type: text/html; charset=UTF-8
  19. Content-Transfer-Encoding: 7bit
  20. 
  21. body
  22. ------=_boundary--
  ```

### SendEmail 和 SendTemplatedEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendemail"></a>

如果您使用 `SendEmail` 或 `SendTemplatedEmail` 操作，则可以通过传入下面的可选参数来指定委托的授权身份。使用 `SendEmail` 或 `SendTemplatedEmail` 操作时，不能使用 X 标头方法。


****  

| 参数 | 说明 | 
| --- | --- | 
| `SourceArn` | 与发送授权策略相关联的身份的 ARN 允许您使用在 `SendEmail` 或 `SendTemplatedEmail` 的 `Source` 参数中指定的电子邮件地址发送电子邮件。 | 
| `ReturnPathArn` | 与发送授权策略相关联的身份的 ARN 允许您使用在 `SendEmail` 或 `SendTemplatedEmail` 的 `ReturnPath` 参数中指定的电子邮件地址。 | 

以下示例显示如何使用 `SendEmail` 或 `SendTemplatedEmail` 操作和[适用于 Python 的 SDK](https://aws.amazon.com/sdk-for-python) 来发送包含 `SourceArn` 和 `ReturnPathArn` 属性的电子邮件。

```
import boto3
from botocore.exceptions import ClientError

# Create a new SES resource and specify a region.
client = boto3.client('ses',region_name="us-east-1")

# Try to send the email.
try:
    #Provide the contents of the email.
    response = client.send_email(
        Destination={
            'ToAddresses': [
                'recipient@example.com',
            ],
        },
        Message={
            'Body': {
                'Html': {
                    'Charset': 'UTF-8',
                    'Data': 'This email was sent with Amazon SES.',
                },
            },
            'Subject': {
                'Charset': 'UTF-8',
                'Data': 'Amazon SES Test',
            },
        },
        SourceArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        ReturnPathArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        Source='sender@example.com',
        ReturnPath='feedback@example.com'
    )
# Display an error if something goes wrong.	
except ClientError as e:
    print(e.response['Error']['Message'])
else:
    print("Email sent! Message ID:"),
    print(response['ResponseMetadata']['RequestId'])
```

## 使用 Amazon SES SMTP 接口
<a name="sending-authorization-delegate-sender-tasks-smtp"></a>

使用 Amazon SES SMTP 接口进行委托发送时，必须在邮件中包含 `X-SES-SOURCE-ARN`、`X-SES-FROM-ARN` 和 `X-SES-RETURN-PATH-ARN` 标头。在 SMTP 会话中发出 `DATA` 命令后将传递这些标头。