使用 Amazon SES 发送授权代表身份拥有者发送电子邮件 - Amazon Simple Email Service

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

使用 Amazon SES 发送授权代表身份拥有者发送电子邮件

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

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

重要

要成功发送电子邮件,您必须连接到身份拥有者验证身份的 AWS 区域中的 Amazon SES 端点。

此外,必须将身份拥有者和委托发件人的 AWS 账户从沙盒中移除,然后任一账户才能发送电子邮件到未验证的地址。有关更多信息,请参阅申请生产访问权限(移出 Amazon SES 沙箱)

使用 Amazon SES API

与任何 Amazon SES 电子邮件发件人相同,如果您经由 Amazon SES API 访问 Amazon SES(无论是通过 HTTPS 直接访问还是通过 AWS SDK 间接访问),您都可以在三种电子邮件发送操作之间进行选择:SendEmailSendTemplatedEmailSendRawEmailAmazon Simple Email Service API 参考 介绍了这些 API 的详细信息,我们在此处仅提供发送授权参数的概述。

SendRawEmail

如果您想要使用 SendRawEmail 以便可以控制电子邮件的格式,您可以通过以下两种方式之一指定委托授权身份:

  • SendRawEmail API 传递可选参数。下表中描述了必需参数:

    参数

    说明

    SourceArn

    与发送授权策略相关联的身份的 ARN 允许您使用在 SendRawEmailSource 参数中指定的电子邮件地址发送电子邮件。

    注意

    如果仅指定 SourceArn,Amazon SES 会将“From”地址和“Return Path”地址设置为在 SourceArn 中指定的身份。

    FromArn

    与发送授权策略相关联的身份的 ARN 允许您在原始电子邮件的标头中指定特定的“发件人”地址。

    ReturnPathArn

    与发送授权策略相关联的身份的 ARN 允许您使用在 SendRawEmailReturnPath 参数中指定的电子邮件地址。

  • 在电子邮件中包括 X 标头。X 标头是自定义标头,可以作为标准电子邮件标头的补充来使用(例如 From、Reply-To 或 Subject 标头)。Amazon SES 能识别三种 X 标头,您可以用它们来指定发送授权参数:

    重要

    请不要在 DKIM 签名中包含这些 X 标头,因为它们将在发送电子邮件之前被 Amazon SES 删除。

    X 标头

    说明

    X-SES-SOURCE-ARN

    对应于 SourceArn

    X-SES-FROM-ARN

    对应于 FromArn

    X-SES-RETURN-PATH-ARN

    对应于 ReturnPathArn

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

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

    X-SES-SOURCE-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com X-SES-FROM-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com X-SES-RETURN-PATH-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com From: sender@example.com To: recipient@example.com Return-Path: feedback@example.com Subject: subject Content-Type: multipart/alternative; boundary="----=_boundary" ------=_boundary Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit body ------=_boundary Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit body ------=_boundary--

SendEmail 和 SendTemplatedEmail

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

参数

说明

SourceArn

与发送授权策略相关联的身份的 ARN 允许您使用在 SendEmailSendTemplatedEmailSource 参数中指定的电子邮件地址发送电子邮件。

ReturnPathArn

与发送授权策略相关联的身份的 ARN 允许您使用在 SendEmailSendTemplatedEmailReturnPath 参数中指定的电子邮件地址。

以下示例显示如何使用 SendEmailSendTemplatedEmail 操作和适用于 Python 的 SDK 来发送包含 SourceArnReturnPathArn 属性的电子邮件。

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 接口

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