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

相关推荐
创实信息2 天前
GitHub企业版:AWS CodeCommit迁移的最佳路径与技术优势
git·ci/cd·github·aws·github企业版·aws codecommit
九河云3 天前
《Amazon Bedrock vs ChatGPT:谁更胜一筹?》
人工智能·语言模型·chatgpt·云计算·aws
程序猿进阶4 天前
Spring boot启动原理及相关组件
java·网络·数据库·spring boot·后端·spring·aws
sealaugh324 天前
aws(学习笔记第十八课) 使用aws cdk(python)进行部署
笔记·学习·aws
AutoMQ5 天前
Kafka 迁移 AutoMQ 时 Flink 位点管理的挑战与解决方案
大数据·阿里云·云原生·kafka·云计算·腾讯云·aws·消息·gcp·计算·automq
AutoMQ5 天前
活动预告|云原生创新论坛:知乎携手 AutoMQ、OceanBase、快猫星云的实践分享
大数据·阿里云·云原生·kafka·云计算·腾讯云·aws·消息·gcp·计算·automq
Yan.love5 天前
【现代服务端架构】传统服务器 对比 Serverless
服务器·架构·serverless·github
范桂飓6 天前
AWS re:Invent 2024 — AI 基础设施架构
人工智能·架构·aws
九河云6 天前
Amazon Bedrock与AWS服务的无缝集成,如何打造智能化应用
人工智能·云计算·aws
weixin_307779138 天前
AWS云计算问答式知识库系统的实现
python·flask·云计算·fastapi·aws