Amazon Simple Email Service(Amazon SES)让您可以使用 Amazon SES API 或 SMTP 接口放心地联络到客户,而无需使用本地简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)电子邮件服务器。
Amazon Simple Email Service(又称 SES 群发邮件)是一个电子邮件平台,为您提供一种简单、经济高效的方式,让您使用自己的电子邮件地址和域发送和接收电子邮件。
例如,您可以发送营销电子邮件(例如特别优惠)、交易电子邮件(例如订单确认)以及其他类型的通信(例如新闻通讯)。当您使用 Amazon SES 接收邮件时,您可以开发软件解决方案,例如电子邮件自动回复器、电子邮件取消订阅系统以及从传入电子邮件生成客户支持票证的应用程序。
Amazon SES 是一家基于云的电子邮件服务提供商,可以集成到任何应用程序中,以实现大批量电子邮件自动化。无论您是使用电子邮件软件发送交易电子邮件、营销电子邮件还是时事通讯电子邮件,都只需按实际用量付费。Amazon SES 是一款电子邮件工具,还支持包括专用、共享或自有 IP 地址的部署。关于发件人统计数据的报告和电子邮件送达率工具可帮助企业确保每封电子邮件都有效送达。
Amazon SES 提供了多种发送电子邮件的方式,包括 Amazon SES 控制台、简单邮件传输协议(SMTP)接口和 Amazon SES API。
送达率:确保电子邮件到达收件箱而不是垃圾邮件,是成功的电子邮件策略的核心要素。
SES 提供对发件人电子邮件性能的洞察,就如何提高送达率提出建议,甚至可以自动为发件人实施电子邮件送达率改进。SES 具有三个核心可交付性组件:数据分析、建议更改和自动实施
分析电子邮件送达率
SES 的送达率数据分析可以帮助电子邮件发件人了解他们的送达率。 在 SES 控制台的单个界面中查看有关发送和送达数据的概览报告,例如跳出率、打开次数和点击次数。您可以按照 ISP、发件人身份和配置集查看这些指标的明细,以及您发送的每封电子邮件的送达和互动情况。
查看电子邮件送达率建议
SES 可以通知发件人电子邮件送达率问题并提供可操作的建议以帮助提高收件箱送达率,例如审查 SPF、DKIM 和 DMARC 等电子邮件身份验证配置。如果识别出电子邮件声誉降级或改进机会,发件人将持续可见。
自动提高电子邮件送达率
发件人可以选择允许 SES 自动实施电子邮件送达率建议,例如优化电子邮件送达模式。一旦 SES 检测到改进的机会,系统将实施更改,而无需监控或手动调整。
Amazon SES 支持所有行业标准的身份验证机制,包括域名密钥识别邮件 (DKIM)、发件人策略框架 (SPF)、基于域的邮件身份验证、报告和一致性 (DMARC)。
Amazon SES 提供了数种用于监控电子邮件发送活动的方式,帮助调整电子邮件发送策略。Amazon SES 可以捕获有关整个电子邮件回复管道的信息,包括发送和送达的电子邮件数、电子邮件被打开、单击、退回的次数及其遭到投诉的次数以及被拒收的次数。
Amazon SES 控制台包含一个声誉控制面板,可以使用它来跟踪可能影响电子邮件发送的问题。
在使用 Amazon SES 接收传入电子邮件时,可以完全掌控要接收哪些电子邮件,以及接收电子邮件后要如何处理。
借助 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");
}
作为 AWS Free Tier 的一部分,SES 提供灵活的免费套餐,使您可以免费试用所需的 SES 电子邮件功能。在开始使用 SES 后的 12 个月内,免费套餐客户每月最多可免费接收 3000 条消息。
以下 SES 产品的消息费用有资格享受 SES 免费套餐:
亚马逊云服务免费体验中心
将 Amazon SES 与 AWS 开发工具包结合使用
通过 AWS 管理控制台开始使用