开始使用 AWS SDK 发送电子邮件
可以使用 AWS 软件开发工具包有效管理通过 Amazon Web Services (AWS) Simple Email Service (SES) 发送电子邮件。本指南将引导您完成必要的步骤,并提供示例代码来帮助您设置和发送第一封电子邮件。
如果您遇到问题(例如无效的安全令牌),本文还将介绍常见的故障排除步骤。通过遵循这些说明,您可以确保使用 AWS SES 将电子邮件功能集成到您的应用程序中获得流畅的体验。
命令 | 描述 |
---|---|
AmazonSimpleEmailServiceClient | 为 Amazon SES 创建客户端,用于以编程方式发送电子邮件。 |
SendEmailRequest | 指定发送电子邮件的参数,包括来源、目的地和消息内容。 |
Destination | 指定正在发送的电子邮件的收件人的电子邮件地址。 |
Message | 包含电子邮件的主题和正文,其中可以包括 HTML 和纯文本部分。 |
Content | 定义电子邮件主题或正文的内容,包括文本和字符集。 |
BasicAWSCredentials | 提供身份验证所需的 AWS 凭证(访问密钥和密钥)。 |
sendEmail | 使用 Node.js AWS 开发工具包中的指定参数发送电子邮件。 |
设置 AWS SES 电子邮件发送
提供的 C# 脚本演示了如何通过 AWS 软件开发工具包使用 Amazon Web Services (AWS) 简单电子邮件服务 (SES) 发送电子邮件。最初,该脚本使用以下命令设置 AWS 凭证 BasicAWSCredentials,这需要您的访问密钥和秘密密钥。然后,它配置 SES 客户端 AmazonSimpleEmailServiceConfig 指定区域,并使用创建一个新的 SES 客户端实例 AmazonSimpleEmailServiceClient。该客户端用于以编程方式发送电子邮件。电子邮件详细信息定义在 SendEmailRequest 对象,指定源电子邮件、目标电子邮件地址以及 HTML 和纯文本格式的消息内容。
Node.js 脚本遵循类似的流程,但使用适用于 JavaScript 的 AWS 开发工具包。 SES 客户端使用 AWS 凭证和指定区域进行实例化。电子邮件参数,包括来源、目的地、主题和正文内容,封装在 params 目的。这 sendEmail 然后调用SES客户端的函数来发送电子邮件。这两个脚本都包含错误处理功能,用于捕获和显示电子邮件发送过程中出现的任何问题,确保开发人员能够有效地诊断和修复问题。
使用 C# 中的 AWS SDK 发送电子邮件
使用 AWS 开发工具包的 C# 脚本
using Amazon;
using Amazon.SimpleEmail;
using Amazon.SimpleEmail.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var accessKey = "your-access-key";
var secretKey = "your-secret-key";
var region = RegionEndpoint.USEast1;
var credentials = new Amazon.Runtime.BasicAWSCredentials(accessKey, secretKey);
var config = new AmazonSimpleEmailServiceConfig { RegionEndpoint = region };
using var client = new AmazonSimpleEmailServiceClient(credentials, config);
var sendRequest = new SendEmailRequest
{
Source = "email@example.com",
Destination = new Destination
{
ToAddresses = new List<string> { "email@example.com" }
},
Message = new Message
{
Subject = new Content("Test email"),
Body = new Body
{
Html = new Content
{
Charset = "UTF-8",
Data = "<h1>Hello</h1><p>This is a test email sent using Amazon SES.</p>"
},
Text = new Content
{
Charset = "UTF-8",
Data = "Hello, this is a test email sent using Amazon SES."
}
}
}
};
try
{
var response = await client.SendEmailAsync(sendRequest);
Console.WriteLine("Email sent! Message ID: " + response.MessageId);
}
catch (Exception ex)
{
Console.WriteLine("Error sending email: " + ex.Message);
}
}
}
使用 AWS SDK 发送电子邮件的服务器端脚本
使用 AWS 开发工具包的 Node.js 脚本
const AWS = require('aws-sdk');
const ses = new AWS.SES({
accessKeyId: 'your-access-key',
secretAccessKey: 'your-secret-key',
region: 'us-east-1'
});
const params = {
Source: 'email@example.com',
Destination: {
ToAddresses: ['email@example.com']
},
Message: {
Subject: {
Data: 'Test email'
},
Body: {
Html: {
Charset: 'UTF-8',
Data: '<h1>Hello</h1><p>This is a test email sent using Amazon SES.</p>'
},
Text: {
Charset: 'UTF-8',
Data: 'Hello, this is a test email sent using Amazon SES.'
}
}
}
};
ses.sendEmail(params, (err, data) => {
if (err) {
console.error("Error sending email: ", err);
} else {
console.log("Email sent! Message ID: ", data.MessageId);
}
});
了解 AWS SES 配置和限制
通过 AWS SES 发送电子邮件的一个重要方面涉及了解和配置必要的权限和限制。 AWS SES 要求您验证发件人和收件人电子邮件地址,尤其是当您的账户位于 SES 沙盒环境中时。您必须验证您的域并设置域名密钥识别邮件 (DKIM) 以提高电子邮件的送达率和真实性。
此外,AWS 对您每天和每秒可以发送的电子邮件数量施加了发送限制。您可以通过 AWS 支持中心请求增加服务限制来增加这些限制。确保您拥有正确的 IAM 策略来允许 SES 操作对于平稳运行也至关重要。这些策略定义了 AWS 开发工具包允许执行哪些操作,并且应谨慎管理。
有关 AWS SES 电子邮件发送的常见问题
- 如何在 AWS SES 中验证电子邮件地址?
- 您可以通过导航到 SES 控制台,选择“身份管理”下的“电子邮件地址”,然后单击“验证新电子邮件地址”来验证 AWS SES 中的电子邮件地址。 AWS 将向指定地址发送一封验证电子邮件。
- SES沙箱环境是什么?
- SES 沙箱环境是一种受限访问模式,您可以在其中测试电子邮件发送功能。在此模式下,您只能将电子邮件发送到经过验证的地址。要将电子邮件发送到未经验证的地址,您需要通过请求生产访问权限来移出沙箱。
- 如何提高我的 SES 发送限额?
- 要增加 SES 发送限制,您需要通过 AWS 支持中心提交 SES 发送限制增加请求。指定所需的每日和每秒发送限制,并提供有关您的用例的详细信息。
- SES 需要哪些 IAM 策略?
- SES 的 IAM 策略通常包括以下权限: ses:SendEmail, ses:SendRawEmail,以及其他必要的 SES 行动。这些策略应附加到需要访问权限的 IAM 角色或用户。
- 如何使用 SES 提高电子邮件送达率?
- 要提高电子邮件送达率,请验证您的域、设置 DKIM,并确保您的电子邮件内容遵循最佳实践以避免垃圾邮件过滤器。定期监控您的退回率和投诉率,并根据需要采取纠正措施。
- 我可以使用 AWS SES 发送附件吗?
- 是的,您可以通过构建原始电子邮件消息使用 AWS SES 发送附件。这涉及使用 SendRawEmail API 并使用 MIME 格式化电子邮件。
- 什么是 DKIM?如何设置?
- DKIM(域名密钥识别邮件)是一种电子邮件身份验证方法,允许收件人验证电子邮件是否由授权发件人发送。要进行设置,请在 SES 控制台中生成 DKIM 密钥,并将提供的 DNS 记录添加到您域的 DNS 设置中。
- 如何处理退回邮件和投诉通知?
- 要处理退回邮件和投诉通知,请在 SES 控制台中设置 SNS 主题,并将 SES 配置为向该主题发送通知。使用电子邮件端点或其他通知服务订阅 SNS 主题以接收警报。
- 我可以将 SES 与其他 AWS 服务结合使用吗?
- 是的,AWS SES 可以与其他 AWS 服务集成,例如用于处理电子邮件事件的 Lambda、用于通知的 SNS 以及用于监控电子邮件发送指标和警报的 CloudWatch。
关于 AWS SES 集成的最终想法
总之,集成 AWS SES 以通过 AWS SDK 发送电子邮件涉及一系列关键步骤,包括配置访问密钥、设置凭证和了解必要的权限。提供的 C# 和 Node.js 脚本演示了如何有效地实现此过程,确保可靠的电子邮件传递。解决无效安全令牌等常见问题对于顺利运行至关重要。
通过仔细遵循指南并了解底层命令,开发人员可以将 AWS SES 无缝集成到他们的应用程序中。这不仅增强了电子邮件功能,还利用 AWS 强大的基础设施来实现可扩展且安全的通信解决方案。