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

相关推荐
yuanlaile1 天前
从入门到部署|2026年Koa全栈开发实战:覆盖Node.js、数据库、部署与云架构全链路
微服务·云原生·kubernetes·node.js·serverless·nodejs全栈开发
亚马逊云开发者2 天前
试了 8 种方式全失败后,我用双通道架构把 Kiro CLI 变成了 REST API
aws
亚马逊云开发者2 天前
两个 AI Agent 互相调用是什么体验?Kiro + OpenClaw 双协议实战,架构评审从 2 天干到 15 分钟
aws
亚马逊云开发者3 天前
更新个监控 Agent 要协调 200 个团队?Amazon ECS 托管守护进程终于把平台工程师从苦海里捞出来了
aws
亚马逊云开发者3 天前
5 个 Agent 协同处理金融业务,我用 Kiro + AgentCore 半天就部署上线了
aws
亚马逊云开发者3 天前
我把 Claude Code 的 Token 费砍了 70%,只用了 SageMaker + 一个路由 Hook
aws
圣殿骑士-Khtangc3 天前
Amazon CodeWhisperer 超详细使用教程:AWS 云原生 AI 编程助手上手指南
人工智能·ai编程·aws·编程助手·codewhisperer
翼龙云_cloud4 天前
亚马逊云代理商:如何在 AWS Lightsail 上一键部署 OpenClaw 私有化 AI 助手?
人工智能·云计算·aws·openclaw
Lim小刘5 天前
AWS IAM Identity Center 实战操作:从启用、用户、权限集到 SSO 登录
云计算·aws·云安全·sso
运维行者_6 天前
使用 Applications Manager 实现 AWS 云监控:保障业务应用高效运行
大数据·运维·服务器·网络·数据库·云计算·aws