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

相关推荐
tech讯息11 小时前
商业化内容生产适用企业级视频生成模型云平台推荐|从模型生成至审核分发全链路 AWS 选型方案
人工智能·音视频·aws
FungLeo1 天前
Node 后端实战 · Cloudflare Workers 限流总误伤?用内存固定窗口替代 KV 实战
serverless·cloudflare·接口请求限流·限流内存方案·workes
sRect3 天前
用ESP32-S3开发板开发一个接收消息的BB机
android·serverless·嵌入式
FungLeo3 天前
Node 后端实战 · D1 那些坑:100 参数上限逼出的批量写入重构
node.js·serverless·d1 数据库·sqli
测试运维日常笔记3 天前
AWS EKS 集群部署与清理手顺
云计算·aws
故乡dee云4 天前
AWS 产品太多不会选?按“网站、数据库、文件、日志”4 类需求快速匹配
数据库·云计算·aws
翼龙云_cloud6 天前
亚马逊云代理商:VPC网络ACL和安全组配置实践 从网络层到实例层的双重防护
运维·网络·安全·云计算·aws
阿里云云原生10 天前
AI 应用的统一流量门户:深度解析阿里云 AI 网关 Serverless 新架构与智能路由
serverless
Freed&10 天前
阿里云 OSS 至 AWS S3 跨云迁移实施指南
阿里云·云计算·aws
故乡dee云12 天前
AWS CloudFront 使用教程:CDN 加速功能和网站部署优化
云计算·aws