AWS SES 邮件服务
大规模收发邮件的云服务。
1 小时
AWS SES
这一课你将能做到
- 配置 SES 发送邮件
- 验证域名和邮箱地址
- 用 Node.js SDK 发送邮件
为什么要学
用户注册、密码重置、订单通知都需要发邮件。SES(Simple Email Service)是 AWS 的邮件服务,便宜、可靠、可扩展。
人话:SES 是「邮局」,帮你把邮件送到用户邮箱。
跟着做
步骤 1:验证域名
# SES → Verified identities → Create identity
# Type: Domain
# Domain: yourdomain.com
# SES 会提供 3 条 DKIM 记录,添加到 Route 53
# Type: CNAME
# Name: xxx._domainkey.yourdomain.com
# Value: xxx.dkim.amazonses.com
步骤 2:验证邮箱(沙盒模式)
# SES 默认是沙盒模式,只能发给已验证的邮箱
# 验证接收邮箱:
# SES → Verified identities → Create identity
# Type: Email address
# Email: user@example.com
# 申请移出沙盒(生产环境):
# SES → Account dashboard → Request production access
步骤 3:Node.js SDK
npm install @aws-sdk/client-ses
const { SESClient, SendEmailCommand } = require('@aws-sdk/client-ses');
const ses = new SESClient({
region: 'us-east-1',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
}
});
async function sendEmail(to, subject, html) {
const params = {
Source: 'noreply@yourdomain.com',
Destination: {
ToAddresses: [to]
},
Message: {
Subject: { Data: subject },
Body: {
Html: { Data: html }
}
}
};
try {
await ses.send(new SendEmailCommand(params));
console.log('邮件发送成功');
} catch (err) {
console.error('发送失败:', err);
}
}
// 使用
sendEmail(
'user@example.com',
'欢迎注册',
'<h1>欢迎!</h1><p>点击链接验证邮箱:<a href="https://yourdomain.com/verify?token=xxx">验证</a></p>'
);
步骤 4:模板邮件
// 创建模板
const { CreateTemplateCommand } = require('@aws-sdk/client-ses');
const template = {
TemplateName: 'WelcomeEmail',
SubjectPart: '欢迎注册 {{name}}!',
HtmlPart: '<h1>你好,{{name}}!</h1><p>点击链接验证邮箱:<a href="{{url}}">验证</a></p>'
};
await ses.send(new CreateTemplateCommand({ Template: template }));
// 发送模板邮件
const { SendTemplatedEmailCommand } = require('@aws-sdk/client-ses');
await ses.send(new SendTemplatedEmailCommand({
Source: 'noreply@yourdomain.com',
Destination: { ToAddresses: ['user@example.com'] },
Template: 'WelcomeEmail',
TemplateData: JSON.stringify({
name: '张三',
url: 'https://yourdomain.com/verify?token=xxx'
})
}));