Amazon SES 介绍和入门使用

Amazon SES(simple email service)是一个易于使用且经济高效的电子邮件平台,有便于您通过该平台,使用您自己的电子邮件地址和域名,来发送或接收电子邮件。
优点

对企业来说,构建大规模的电子邮件解决方案通常是一个复杂且成本高昂的挑战。您必须解决电子邮件服务器管理、网络配置和 IP 地址信誉等基础设施难题。除此之外,许多第三方电子邮件解决方案还会要求与您签署合同,而且价格还需要协商,到了使用初期,您还需要支付大量的前期费用。

Amazon SES 就为您铺平了道路,因为 Amazon.com 在这方面已经积累了多年经验,并且为服务自身的庞大客户群构建了完善的电子邮件基础设施,而这些都能有利于您获益良多。

适用场景
  • 将电子邮件和域身份从一个 AWS 区域复制到另一个区域
  • 生成凭证以连接到 SMTP 端点
  • 验证电子邮件身份与发送消息
可参考链接:

https://docs.aws.amazon.com/zh_cn/ses/latest/dg/service_code_examples_ses_scenarios.html

示例1

以下示例是使用 Python 语言向自己发送电子邮件,以便检查是否收到了该电子邮件。

Region:Singapore [ap-southeast-1]

先决条件:

  • 使用 Amazon SES 验证电子邮件地址
  • 获取 AWS 凭证,即 Amazon ESE SMTP 凭证
  • 安装 Python 3.7 及以上版本
  • 安装 AWS SDK for Python(Boto)
#01
使用 Amazon SES 验证电子邮件地址

1)创建电子邮件地址 minxxx@xxxxoud.com

导航到 Amazon SES 控制台,在“配置”栏选择“已验证身份”,点击“创建身份”。身份类型选择“电子邮件地址”,输入要验证的电子邮件地址。

云技术分享 | Amazon SES 介绍和入门使用

点击“创建身份”按钮。

2)验证电子邮件身份

登录邮箱,查看收件箱,会收到一封来自no-reply-aws@amazon.com的邮件。根据邮件内容操作验证,完成后,更新控制台,身份状态更新为“已验证”。

云技术分享 | Amazon SES 介绍和入门使用
云技术分享 | Amazon SES 介绍和入门使用
云技术分享 | Amazon SES 介绍和入门使用
#02
获取 AWS 凭证,即用户的访问密钥
使用 SDK 访问 Amazon SES 需要 AWS 访问密钥 ID 和 AWS 访问密码。

1)选择 Create SMTP Credentials(创建 SMTP 凭证) ,将打开 IAM 控制台。

2)对于为 SMTP 创建用户,请在 IAM User Name(IAM 用户名) 字段键入您的 SMTP 用户的名称,或使用提供的默认值。完成后,选择右下角的 Create(创建) 。

云技术分享 | Amazon SES 介绍和入门使用
3)展开显示用户 SMTP 安全凭证 ,屏幕上显示您的 SMTP 凭证。

4)选择 Download Credentials(下载凭证) 或者复制凭证,并将其存储在安全的地方(关闭此对话框后,将无法查看或保存凭证)。

5)选择 Close Window(关闭窗口)。

6)在 IAM 用户找到名为 minxxxxxx23-1-10 的用户,在“安全凭证”栏,创建,下载并记录好 AKSK。

在“权限”栏,给用户自动附加了 AmazonSesSendingAccess 策略,可以根据需求修改策略。

可以参考“IAM 用户使用 SES 发送邮件的权限策略”,链接如下:

https://docs.aws.amazon.com/zh_cn/ses/latest/dg/control-user-access.html#iam-and-ses-examples-email-sending-actions

云技术分享 | Amazon SES 介绍和入门使用
#03
安装Python 3.7版本

此处不做详细演示,具体可以参考文章“在Linux下安装python 3.7”

https://cloud.tencent.com/developer/article/1918543

#04
安装AWS SDK for Python(Boto)

此处不做详细演示,具体可以参考官网链接:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/migrationpy3.html#guide-migration-py3

以下截图是成功安装boto3的输出:

云技术分享 | Amazon SES 介绍和入门使用
云技术分享 | Amazon SES 介绍和入门使用
#05
使用 SDK for Python 通过 Amazon SES 发送电子邮件
1)配置AWS configure

将IAM用户(minxxxxx23-1-10)安全访问凭证的 AKSK 分别添加到 AK、SK,Region 替换为所在区域的 Region。

使用命令,根据提示输入AK 、SK 和 Region:

aws configure
2)创建一个名为amazon-ses-sample.py 的文件,粘贴以下代码:
import boto3from botocore.exceptions import ClientError# Replace sender@example.com with your "From" address.# This address must be verified with Amazon SES.SENDER = "Sender Name <sender@example.com>"
# Replace recipient@example.com with a "To" address. If your account # is still in the sandbox, this address must be verified.RECIPIENT = "recipient@example.com"
# Specify a configuration set. If you do not want to use a configuration# set, comment the following variable, and the # ConfigurationSetName=CONFIGURATION_SET argument below.CONFIGURATION_SET = "ConfigSet"
# If necessary, replace us-west-2 with the AWS Region you're using for Amazon SES.AWS_REGION = "us-west-2"
# The subject line for the email.SUBJECT = "Amazon SES Test (SDK for Python)"
# The email body for recipients with non-HTML email clients.BODY_TEXT = ("Amazon SES Test (Python)rn"             "This email was sent with Amazon SES using the "             "AWS SDK for Python (Boto)."            )
# The HTML body of the email.BODY_HTML = """<html><head></head><body>  <h1>Amazon SES Test (SDK for Python)</h1>  <p>This email was sent with    <a href='https://aws.amazon.com/ses/'>Amazon SES</a> using the    <a href='https://aws.amazon.com/sdk-for-python/'>      AWS SDK for Python (Boto)</a>.</p></body></html>            """            
# The character encoding for the email.CHARSET = "UTF-8"
# Create a new SES resource and specify a region.client = boto3.client('ses',region_name=AWS_REGION)
# Try to send the email.try:    #Provide the contents of the email.    response = client.send_email(        Destination={            'ToAddresses': [                RECIPIENT,            ],        },        Message={            'Body': {                'Html': {                    'Charset': CHARSET,                    'Data': BODY_HTML,                },                'Text': {                    'Charset': CHARSET,                    'Data': BODY_TEXT,                },            },            'Subject': {                'Charset': CHARSET,                'Data': SUBJECT,            },        },        Source=SENDER,        # If you are not using a configuration set, comment or delete the        # following line        ConfigurationSetName=CONFIGURATION_SET,    )# Display an error if something goes wrong.  except ClientError as e:    print(e.response['Error']['Message'])else:    print("Email sent! Message ID:"),    print(response['MessageId'])

注释:

  • sender@example.com:替换为您已使用 Amazon SES 验证过的电子邮件地址。Amazon SES 中的电子邮件地址区分大小写。请确保您输入的地址与经验证的地址完全相同。
  • recipient@example.com:替换为收件人的地址。
  • us-west-2:请将它替换为您要使用的区域。
  • ConfigSet:请将它替换为您使用的配置集。

3)保存amazon-ses-sample.py,并在该文件所在目录运行程序,运行命令

python amazon-ses-sample.py

4)检查输出,如果已成功发送电子邮件,则控制台会显示“Email sent!”

云技术分享 | Amazon SES 介绍和入门使用
否则将显示一条错误消息。

5)登录邮箱可收到已发送的电子邮件

云技术分享 | Amazon SES 介绍和入门使用

此处只演示了使用Python开发工具发送邮件,更多开发工具(.Net、JAVA、PHP、Ruby)使用,请参考链接:

https://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-an-email-using-sdk-programmatically.html

示例2

基于示例1的基础上,将账号移出 Amazon SES 沙盒

当您的账户不在沙盒中时,您可以将电子邮件发送给任何收件人,而不管收件人的地址或域是否经过验证,同时须验证用作“发件人”、“源”、“发送者”或“退回路径”地址的所有身份。

具体有两种实现方法,请参考链接:

https://docs.aws.amazon.com/zh_cn/ses/latest/dg/request-production-access.html

当你提交申请后,控制台会跳出如下弹框提示

云技术分享 | Amazon SES 介绍和入门使用
提交申请的24小时,关注自己的邮箱,是否有后台提问需要回答,等待审核。

当审核通过,会在控制台首页看到已经分配了发送电子邮件的权限。获得50000的配额,最大的发送速率为每秒14封。具体会根据你的申请条件分配。

云技术分享 | Amazon SES 介绍和入门使用
只要修改 amazon-ses-sample.py 的收件人电子邮件即可,收件人的电子邮件地址未验证。
云技术分享 | Amazon SES 介绍和入门使用
运行脚本,成功发送邮件
云技术分享 | Amazon SES 介绍和入门使用
云技术分享 | Amazon SES 介绍和入门使用
赞(0) 打赏
未经允许不得转载:双小刚博客 » Amazon SES 介绍和入门使用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏