什么是Amazon Simple Email Service(SES 群发邮件)

Amazon Simple Email Service(Amazon SES)让您可以使用 Amazon SES API 或 SMTP 接口放心地联络到客户,而无需使用本地简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)电子邮件服务器。

在这里插入图片描述

目录

  • 什么是SES
  • 为什么使用 SES
  • 解决难点
  • 应用场景
  • 工作原理
  • Amazon SES 现在支持的功能
    • 邮件发送人配置选项
    • 提高收件箱送达率
    • 灵活的部署选项
    • 发件人身份管理和安全性
    • 发送统计信息
    • 声誉控制面板
    • 电子邮件接收
    • 邮箱模拟器
  • 代码示例-使用 AWS 开发工具包通过 Amazon SES 发送电子邮件
  • 限时-SES 提供灵活的免费套餐
  • 附录

什么是SES

Amazon Simple Email Service(又称 SES 群发邮件)是一个电子邮件平台,为您提供一种简单、经济高效的方式,让您使用自己的电子邮件地址和域发送和接收电子邮件。

例如,您可以发送营销电子邮件(例如特别优惠)、交易电子邮件(例如订单确认)以及其他类型的通信(例如新闻通讯)。当您使用 Amazon SES 接收邮件时,您可以开发软件解决方案,例如电子邮件自动回复器、电子邮件取消订阅系统以及从传入电子邮件生成客户支持票证的应用程序。


为什么使用 SES

Amazon SES 是一家基于云的电子邮件服务提供商,可以集成到任何应用程序中,以实现大批量电子邮件自动化。无论您是使用电子邮件软件发送交易电子邮件、营销电子邮件还是时事通讯电子邮件,都只需按实际用量付费。Amazon SES 是一款电子邮件工具,还支持包括专用、共享或自有 IP 地址的部署。关于发件人统计数据的报告和电子邮件送达率工具可帮助企业确保每封电子邮件都有效送达。


解决难点

  • 对于企业来说,构建大规模电子邮件解决方案通常是一项复杂且成本高昂的挑战。您必须应对基础设施挑战,例如:
    • 电子邮件服务器管理
    • 网络配置
    • IP 地址部署认证等。
  • 第三方电子邮件解决方案需要:
    • 合同和价格谈判
    • 大量的前期成本。
  • Amazon SES 消除了这些挑战,并使您能够受益于 Amazon.com 服务其自身的大规模客户群而构建的多年经验和先进的电子邮件基础设施

应用场景

  • 自动发送事务型邮件:通过自动发送电子邮件(如购买或发货通知、订单状态更新和策略变更通知)来使您的客户随时掌握最新信息。
  • 在全球范围内传送营销电子邮件:通过新闻通讯、特别优惠和吸引受众的内容,向全球各地的客户介绍产品和服务。
  • 及时向客户发送通知:及时向客户发送有关其与您的产品和服务之间交互的通知,包括每日提醒、每周使用报告和新闻通讯。
  • 批量发送电子邮件通信:向大型团体传送消息(包括通知和公告),并使用配置集跟踪结果。

工作原理

下面介绍以使用 SES 发送电子邮件时的工作原理为例:
在这里插入图片描述

  1. 电子邮件发件人的客户端应用程序向 SES 发出请求,将电子邮件发送给一个或多个收件人。
  2. 如果请求有效,SES 会接受该电子邮件。
  3. SES 通过互联网将消息发送至收件人的接收者。一旦消息传递到 SES,通常会立即发送,第一次传递尝试通常会在几毫秒内发生。
  4. 此时,就有不同的可能性。例如:
    a. ISP 成功地将邮件传送到收件人的收件箱。
    b. 收件人的电子邮件地址不存在,因此 ISP 向 SES 发送退回通知。然后,SES 将通知转发给发件人。
    c. 收件人收到该邮件,但认为它是垃圾邮件并向 ISP 进行投诉。ISP 与 SES 建立了反馈循环,将投诉发送给 SES,然后 SES 将其转发给发件人。

Amazon SES 现在支持的功能

邮件发送人配置选项

Amazon SES 提供了多种发送电子邮件的方式,包括 Amazon SES 控制台、简单邮件传输协议(SMTP)接口和 Amazon SES API。

提高收件箱送达率

送达率:确保电子邮件到达收件箱而不是垃圾邮件,是成功的电子邮件策略的核心要素。

SES 提供对发件人电子邮件性能的洞察,就如何提高送达率提出建议,甚至可以自动为发件人实施电子邮件送达率改进。SES 具有三个核心可交付性组件:数据分析、建议更改和自动实施

  • 分析电子邮件送达率
    SES 的送达率数据分析可以帮助电子邮件发件人了解他们的送达率。 在 SES 控制台的单个界面中查看有关发送和送达数据的概览报告,例如跳出率、打开次数和点击次数。您可以按照 ISP、发件人身份和配置集查看这些指标的明细,以及您发送的每封电子邮件的送达和互动情况。

  • 查看电子邮件送达率建议
    SES 可以通知发件人电子邮件送达率问题并提供可操作的建议以帮助提高收件箱送达率,例如审查 SPF、DKIM 和 DMARC 等电子邮件身份验证配置。如果识别出电子邮件声誉降级或改进机会,发件人将持续可见。

  • 自动提高电子邮件送达率
    发件人可以选择允许 SES 自动实施电子邮件送达率建议,例如优化电子邮件送达模式。一旦 SES 检测到改进的机会,系统将实施更改,而无需监控或手动调整。

灵活的部署选项

  • 共享 IP 地址
  • 专用 IP 地址
  • 自带 IP 地址

发件人身份管理和安全性

Amazon SES 支持所有行业标准的身份验证机制,包括域名密钥识别邮件 (DKIM)、发件人策略框架 (SPF)、基于域的邮件身份验证、报告和一致性 (DMARC)。

发送统计信息

Amazon SES 提供了数种用于监控电子邮件发送活动的方式,帮助调整电子邮件发送策略。Amazon SES 可以捕获有关整个电子邮件回复管道的信息,包括发送和送达的电子邮件数、电子邮件被打开、单击、退回的次数及其遭到投诉的次数以及被拒收的次数。

声誉控制面板

Amazon SES 控制台包含一个声誉控制面板,可以使用它来跟踪可能影响电子邮件发送的问题。

电子邮件接收

在使用 Amazon SES 接收传入电子邮件时,可以完全掌控要接收哪些电子邮件,以及接收电子邮件后要如何处理。

邮箱模拟器

借助 Amazon SES 邮箱模拟器,可以轻松测试应用程序如何处理各种场景 (如退回邮件或投诉),而不会影响您的发件人。

代码示例-使用 AWS 开发工具包通过 Amazon SES 发送电子邮件

    public static void send(SesClient client,
                            String sender,
                            String recipient,
                            String subject,
                            String bodyHTML
    ) throws MessagingException {

        Destination destination = Destination.builder()
            .toAddresses(recipient)
            .build();

        Content content = Content.builder()
            .data(bodyHTML)
            .build();

        Content sub = Content.builder()
            .data(subject)
            .build();

        Body body = Body.builder()
            .html(content)
            .build();

        Message msg = Message.builder()
            .subject(sub)
            .body(body)
            .build();

        SendEmailRequest emailRequest = SendEmailRequest.builder()
            .destination(destination)
            .message(msg)
            .source(sender)
            .build();

        try {
            System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");
            client.sendEmail(emailRequest);

        } catch (SesException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void sendemailAttachment(SesClient client,
                            String sender,
                            String recipient,
                            String subject,
                            String bodyText,
                            String bodyHTML,
                            String fileLocation) throws AddressException, MessagingException, IOException {

        java.io.File theFile = new java.io.File(fileLocation);
        byte[] fileContent = Files.readAllBytes(theFile.toPath());

        Session session = Session.getDefaultInstance(new Properties());

        // Create a new MimeMessage object.
        MimeMessage message = new MimeMessage(session);

        // Add subject, from and to lines.
        message.setSubject(subject, "UTF-8");
        message.setFrom(new InternetAddress(sender));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));

        // Create a multipart/alternative child container.
        MimeMultipart msgBody = new MimeMultipart("alternative");

        // Create a wrapper for the HTML and text parts.
        MimeBodyPart wrap = new MimeBodyPart();

        // Define the text part.
        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setContent(bodyText, "text/plain; charset=UTF-8");

        // Define the HTML part.
        MimeBodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent(bodyHTML, "text/html; charset=UTF-8");

        // Add the text and HTML parts to the child container.
        msgBody.addBodyPart(textPart);
        msgBody.addBodyPart(htmlPart);

        // Add the child container to the wrapper object.
        wrap.setContent(msgBody);

        // Create a multipart/mixed parent container.
        MimeMultipart msg = new MimeMultipart("mixed");

        // Add the parent container to the message.
        message.setContent(msg);
        msg.addBodyPart(wrap);

        // Define the attachment.
        MimeBodyPart att = new MimeBodyPart();
        DataSource fds = new ByteArrayDataSource(fileContent, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        att.setDataHandler(new DataHandler(fds));

        String reportName = "WorkReport.xls";
        att.setFileName(reportName);

        // Add the attachment to the message.
        msg.addBodyPart(att);

        try {
            System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");

            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            message.writeTo(outputStream);

            ByteBuffer buf = ByteBuffer.wrap(outputStream.toByteArray());

            byte[] arr = new byte[buf.remaining()];
            buf.get(arr);

            SdkBytes data = SdkBytes.fromByteArray(arr);
            RawMessage rawMessage = RawMessage.builder()
                .data(data)
                .build();

            SendRawEmailRequest rawEmailRequest = SendRawEmailRequest.builder()
                .rawMessage(rawMessage)
                .build();

            client.sendRawEmail(rawEmailRequest);

        } catch (SesException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        System.out.println("Email sent using SesClient with attachment");
     }


限时-SES 提供灵活的免费套餐

作为 AWS Free Tier 的一部分,SES 提供灵活的免费套餐,使您可以免费试用所需的 SES 电子邮件功能。在开始使用 SES 后的 12 个月内,免费套餐客户每月最多可免费接收 3000 条消息。

以下 SES 产品的消息费用有资格享受 SES 免费套餐:

  • 出站电子邮件
  • 入站电子邮件
  • 虚拟可交付性管理器出站电子邮件处理

附录

亚马逊云服务免费体验中心
将 Amazon SES 与 AWS 开发工具包结合使用
通过 AWS 管理控制台开始使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134077.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++学习---信号处理机制、中断、异步环境

文章目录 前言信号处理signal()函数关于异步环境 信号处理函数示例raise()函数 前言 信号处理 关于信号,信号是一种进程间通信的机制,用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中,信号是一种异步通知机制&#xff0c…

代码随想录 Day43 动态规划11 LeetCode T309 买卖股票的最佳时期含冷冻期 T714买卖股票的最佳时机含手续费

LeetCode T309 买卖股票的最佳时机含冷冻期 题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 题目思路: 这题其实就是将卖出的状态拆分成三个状态 1.前两天就卖出并一直保持卖出的状态 2.今天卖出的状态 3.今天是冷冻期的状态 当然还有一个…

最新支付宝转卡码生成之转账源代码(隐藏部分卡号)

一、需要准备好自己的卡号、名称、以及对应的姓名 二、然后将自己的信息填入下面的代码中 三、然后将拼接好的代码,利用转码技术生产对应的二维码 四、这样一个跳转银行卡二维码的转账码就做好了 效果演示:如下 支付宝扫码、跳转码、转卡码、隐藏卡号…

【刷题】力扣每日一题 : 381、2300、765

前言 本篇文章用于记录在做力扣每日一题的时候遇到的一些知识点以及自己的思路 381 题干 题目链接 我的思路及做题过程 思路1 我的想法是 记录每个字符串的字母出现个数 然后比较两个字符串是否有字母同时出现 class Solution { public:int judge(string s1, string s2…

asp.net core自定义异常过滤器并记录到Log4Net日志

1.创建异常过滤器特性 using Log4Net.Controllers; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace Log4NetTest {public class CustomerExceptionFilterAttribute : Attribute, IExceptionFilter{private readonly ILogger<CustomerE…

CSS布局001:画各种三角形

CSS实战中&#xff0c;有很多时候采用css来绘制三角形&#xff0c;而不是采用图片的方式&#xff0c;这样有利于快速成型&#xff0c;不用多调用服务器数据。 CSS代码 上三角 #triangle-up {width: 0;height: 0;border-left: 50px solid transparent;border-right: 50px solid…

idea配置tomcat参数,防止nvarchar保存韩文、俄文、日文等乱码

描述下我的场景&#xff1a; 数据库服务器在远程机器上&#xff0c;数据库使用的Oracle&#xff0c;字符集是ZHS16GBK&#xff0c;但保存韩文、俄文、日文等字段A的数据类型是nvarchar(120)&#xff0c;而nvarchar使用的是Unicode 编码&#xff0c;有点乱。。 遇到的问题&…

ArcGIS:如何迭代Shp文件所有要素并分别导出为Shp文件?

01 前言 尝试用IDL实现&#xff0c;奈何又涉及新的类IDLffShape&#xff0c;觉得实在没有必要学习的必要&#xff0c;毕竟不是搞开发&#xff0c;只是做做数据处理&#xff0c;没必要拿IDL不擅长的且底层的东西自己造轮子。 这里想到使用Python去解决&#xff0c;gdal太久没用…

微信的聊天记录导出到网页中的最快方法,语音能听,图片视频能看

12-7 如果你有把微信的聊天记录导出到表格或者网页上的需求&#xff0c;适合看看本文章&#xff0c;本文的方法可以让你把微信的聊天记录导出备份&#xff0c;可以在完全脱离微信的情况下随时调取查看聊天数据。 本文介绍的软件可以导出两种格式的聊天记录备份文件&#xff0…

【C语言】冒泡排序(图解)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 &#x1f308;作者寄语 &#x1f308;&#xff1a; 小菜鸟的力量不在于它的体型&#xff0c;而在于它内心的勇气和无限的潜能&#xff0c;只要你有决心&#xff0c;就没有什么事情是不可能的…

wsl [Ubuntu20.04.6] 安装 Hadoop

文章目录 1.安装WSL2.安装Java安装Hadoop3.3配置文件1.修改hadoop-env.sh2.修改core-site.xml3.修改hdfs-site.xml ssh启动 1.安装WSL 重启电脑 管理员打开powershell PS C:\windows\system32> wsl --list --online PS C:\windows\system32> wsl --install -d Ubuntu-2…

OpenCV图像坐标系

绘制代码: X轴 # 选取两个点 point1 = (20, 0) point2 = (200, 0)# 在图像上绘制连接线 cv2.line(img, point1, point2, (

NSSCTF-Crypto入门题 练习记录贴 ‘‘一‘‘

文章目录 前言001[鹤城杯 2021]easy_crypto002[强网拟态 2021]拟态签到题003[SWPUCTF 2021 新生赛]crypto8004[SWPUCTF 2021 新生赛]crypto7005[SWPUCTF 2021 新生赛]crypto6006[SWPUCTF 2021 新生赛]ez_caesar007[SWPUCTF 2021 新生赛]crypto10008[鹤城杯 2021]A_CRYPTO009[SW…

Spring -Spring之循环依赖源码解析

什么是循环依赖&#xff1f; 很简单&#xff0c;就是A对象依赖了B对象&#xff0c;B对象依赖了A对象。 比如&#xff1a; // A依赖了B class A{public B b; }// B依赖了A class B{public A a; }那么循环依赖是个问题吗&#xff1f; 如果不考虑Spring&#xff0c;循环依赖并…

SparkSQL语法优化

SparkSQL在整个执行计划处理的过程中&#xff0c;使用了Catalyst 优化器。 1 基于RBO的优化 在Spark 3.0 版本中&#xff0c;Catalyst 总共有 81 条优化规则&#xff08;Rules&#xff09;&#xff0c;分成 27 组&#xff08;Batches&#xff09;&#xff0c;其中有些规则会被归…

junit写搜索树测试

用法 assertTrue(range.contains("Two")); 2个参数,右边错就打印左边. AbstractSelfBalancingBinarySearchTree abt; AbstractBinarySearchTree.Node node; Before public void setUp() { abt new AbstractSelfBalancingBinarySearchTree() { Override protecte…

【深度挖掘Java性能调优】「底层技术原理体系」深入挖掘和分析如何提升服务的性能以及执行效率(引导篇)

深入挖掘和分析如何提升服务的性能以及执行效率 前提介绍知识要点 性能概述教你看懂程序的性能案例介绍性能指标性能的参考指标性能瓶颈&#xff08;木桶原理&#xff09; 性能分析三大定律Amdahl定律计算公式参数解释案例分析定律总结 Gustafson定律与Amdahl定律相对立Gustafs…

Panda3d 场景管理

Panda3d 场景管理 文章目录 Panda3d 场景管理有关分层场景图的重要信息NodePathNodePath 以及 Node 的函数调用模型文件文件格式加载模型文件将模型放置在场景图中模型缓存压缩模型异步加载模型通过回调函数进行 常见的状态变化修改节点的位置和姿态改变父级节点改变颜色隐藏和…

【多线程 - 01、概述】

进程 几乎所有的操作系统都支持进程概念&#xff0c;进程是处于运行过程中的程序&#xff0c;进程是操作系统中进行资源分配的基本单位。 三个基本特征 独立性&#xff1a;指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。而对于未建立任何进程的程序&…

深度学习模型基于Python+TensorFlow+Django的垃圾识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 要使用Python、TensorFlow和Django构建一个垃圾识别系统&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装…