AWS无服务器 应用程序开发—第七章 邮件服务 发布订阅(Amazon SES)

Amazon SES (Simple Email Service)

Amazon SES 是一个高可扩展性、灵活且经济高效的电子邮件发送和接收服务,旨在帮助开发人员和企业通过应用程序发送通知、事务型电子邮件和营销电子邮件。

主要功能:

  1. 发送邮件:支持批量发送电子邮件,适用于营销和大规模通知。
  2. 接收邮件:通过将接收到的电子邮件存储在 Amazon S3、调用 AWS Lambda 函数等方式处理。
  3. 高可靠性:依托 AWS 的基础设施,提供高可用性和可靠的邮件传输。
  4. 安全性:支持 DKIM(DomainKeys Identified Mail)、SPF(Sender Policy Framework)和 DMARC(Domain-based Message Authentication, Reporting & Conformance)来防止电子邮件欺诈。
  5. 监控和反馈:提供详细的发送统计数据和反馈,包括送达率、打开率、点击率、退订率等。

在使用 Amazon SES 发送电子邮件之前,您需要验证发件人地址或域名。

验证电子邮件地址:
  1. 登录到 AWS 管理控制台,并选择 Amazon SES 服务。
  2. 在左侧导航栏中,选择 "邮箱地址"。
  3. 点击 "验证新的邮箱地址"。
  4. 输入要验证的邮箱地址,然后点击 "验证此邮箱地址"。
  5. 前往输入的邮箱地址的收件箱,并查收 AWS 发来的验证邮件。点击邮件中的验证链接以完成验证。
验证域名
  1. 登录到 AWS 管理控制台,并选择 Amazon SES 服务。
  2. 在左侧导航栏中,选择 "域"。
  3. 点击 "验证新域"。
  4. 输入要验证的域名,然后选择 "生成验证记录"。
  5. AWS 会提供一组 DNS 记录(包括 TXT 记录和 CNAME 记录)。将这些记录添加到您的域名提供商的 DNS 配置中。
  6. 等待 DNS 记录生效,AWS 会自动检测并验证您的域名。这可能需要一段时间,具体取决于 DNS 记录的传播速度。
验证完成后

一旦邮箱地址或域名验证成功,您就可以使用该地址或域名通过 Amazon SES 发送电子邮件了。这样可以确保邮件的合法性,防止滥用和欺诈。

SES有一个"沙盒"环境,这是一种限制性环境,用于帮助新用户逐步建立可靠的发送信誉。

在SES的沙盒环境中,有以下限制:
  1. 发送限制: 在沙盒环境中,你只能发送给已经验证的收件人地址(也就是通过验证的收件人地址列表)。每日发送配额也受到限制,一般是每日200封邮件。
  2. 不支持所有功能: 沙盒环境不支持所有SES功能。例如,无法发送电子邮件到未验证的收件人地址,无法设置自定义反垃圾邮件规则等。
  3. 监控和限制: AWS会监控沙盒环境中的邮件活动,并对不良行为进行限制。如果触发了SES的限制条件,AWS可能会暂停你的发送权限,直到问题得到解决。

要从SES的沙盒环境中移出,你需要提交请求并申请解除限制。在申请解除限制之前,你需要确保你的邮件发送活动符合AWS的规定,并且你已经完成了一些必要的步骤,如设置DNS记录和验证收件人地址等。

申请解除SES沙盒环境的限制后,你将获得更高的发送配额,并且可以发送邮件到未验证的收件人地址。但是,为了保持良好的发送信誉,你仍然需要遵守SES的使用规则,并且建议你实施一些最佳实践,如避免发送垃圾邮件、处理退订请求等。
申请移出沙盒的时候,第一次都会自动的失败,需要重新提交申请的理由,人工申请核实后,才会解除限制,如果遇到无法移除,可以咨询我

使用lambda函数发送邮件的例子(python)

python 复制代码
import boto3
ses_client = boto3.client('ses')

try:
    CcEmail = CC_EMAIL
    if isinstance(CcEmail, str):
        CcEmail = [CcEmail]
    response = ses_client.send_email(
        Source= SOURCE_EMAIL,
        Destination={
            'ToAddresses': ToEmailALL,
            'CcAddresses':CcEmail,
            'BccAddresses':[BCC_EMAIL]
        },
        Message={
            'Subject': {
                'Data': subject,
            },
            'Body': {
                'Html': {
                    'Data': ''.join(emailHtml)
                },
            }
        }
    )
    print("send Email success")
except Exception as e:
    print("send Email Error", str(e))
    raise e

Amazon SNS (Simple Notification Service)

Amazon SNS 是一项高度可扩展的消息通知服务,允许您从应用程序、微服务或其他分布式系统发送和接收消息。

主要功能:

  1. 发布/订阅模型:允许应用程序或用户订阅主题,发布者将消息发送到这些主题,订阅者将接收到消息。
  2. 多协议支持:支持多种传输协议,如 HTTP/HTTPS、Email、SMS、SQS 以及 AWS Lambda。
  3. 消息过滤:通过消息属性和筛选策略,实现针对性的消息传递。
  4. 高可用性:利用 AWS 的全球基础设施,确保消息传递的高可用性和可靠性。
  5. 可扩展性:支持高吞吐量和低延迟的消息传递,适用于各种规模的应用程序。

总结

Amazon SES 和 Amazon SNS 提供了可靠且可扩展的电子邮件和消息通知解决方案,适用于各种规模的企业和应用程序,帮助提高通信效率和系统可靠性。

相关推荐
danns88812 小时前
什么是 AWS PrivateLink
云计算·aws
shiran小坚果14 小时前
AWS RDS MySQL内存使用
数据库·mysql·云计算·database·aws
sealaugh323 天前
aws(学习笔记第九课) 使用AWS的网络存储EBS
笔记·学习·aws
FinelyYang3 天前
antdesignvue + AWS-S3实现Minio大文件分片上传
aws·分片上传
sealaugh323 天前
aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数据,AWS实例存储
笔记·学习·aws
九河云4 天前
AWS账号的区域划分及其重要性
服务器·云计算·aws
shiran小坚果4 天前
AWS RDS Oracle hit ORA-39405
数据库·oracle·云计算·database·aws
shiran小坚果4 天前
使用AWS Redshift从AWS MSK中读取数据
数据库·云计算·database·aws