Amazon SES란?
사용자의 이메일 주소와 도메인을 사용해 SMTP방식과 API방식으로 이메일을 보내고 받기 위한 경제적이고 손쉬운 방법을 제공하는 아마존의 이메일 플랫폼.
작동방식
- 이메일 발신자 쪽에서 Amazon SES에게 하나 이상의 수신자에게 이메일을 전송하는 요청을 보낸다.
- 요청이 유효하면 Amazon SES가 이메일을 수락한다.
- Amazon SES는 인터넷을 통해 수신자의 수신 장치에 메시지를 보낸다.
- 이 시점에서 다양한 가능성이 존재합다.
- ISP가 성공적으로 메시지를 수신자의 수신함으로 전송한다.
- 수신자의 이메일 주소가 존재하지 않음. 따라서 ISP가 Amazon SES로 반송 메일 알림을 전송한다.
- 수신자가 메시지를 수신하지만 이를 스팸으로 여겨 ISP에게 수신 거부를 제기한다.
적용 방법
- AWS SDK for JavaScript 설치: Next.js 애플리케이션에서 SES 서비스를 사용하려면 AWS SDK for JavaScript를 설치해야 한다. npm이나 yarn을 사용하여 다음 명령어를 터미널에서 실행할 수 있다.
1
2
| // AWS SDK (software development kit) aws-sdk/client-ses 설치
npm install @aws-sdk/client-ses
|
- 프로젝트의 루트 디렉터리에 .env 파일을 만들고 AWS 자격 증명을 추가한다.
1
2
3
| AWS_ACCESS_KEY_ID = YOUR_ACCESS_KEY_ID;
AWS_SECRET_ACCESS_KEY = YOUR_SECRET_ACCESS_KEY;
AWS_REGION = YOUR_REGION;
|
1
2
3
4
5
6
7
8
9
10
| import { SESClient } from "@aws-sdk/client-ses";
const sesClient = new SESClient({
region: process.env.AWS_REGION!,
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!
}
});
export { sesClient };
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| import { sesClient } from "@/libs/sesClient";
import { SendEmailCommand } from "@aws-sdk/client-ses";
const emailHandler = async () => {
try {
const emailResponse = await sesClient.send(
new SendEmailCommand({
Destination: {
ToAddresses: [
// Email_receiver
],
CcAddresses: [],
},
Message: {
Body: {
Text: {
Charset: "UTF-8",
Data: "EMAIL TEST",
},
},
Subject: {
Charset: "UTF-8",
Data: "AWS SES 테스트",
},
},
Source: // Email sender
})
);
console.log("Real Email sent successfully:", emailResponse);
} catch (err) {
console.error("Error sending email:", err);
}
};
export default emailHandler;
|
Leave a comment