IAM 사용자에 AmazonSESFullAccess
권한을 추가한다.
AWS에서 인증한 메일(또는 도메인)만 이메일 주소로 사용할 수 있다.
AWS SES 콘솔의 ‘확인된 자격 증명’을 통해 등록할 수 있다. 자격 증명 생성을 통해 이메일 주소를 입력하고, 이메일 인증을 통해 완료한다. ( Creating and verifying identities in Amazon SES )
발신자, 수신자 모두 인증된 이메일만 사용할 수 있는데 제약을 없애고 싶다면 SandBox 탈출 신청서를 AWS에 제출해야 한다. ( 프로덕션용 업그레이드 신청 )
Amazon SES 샌드박스 환경에서 나가기
<html>
<body>
<div>
<p>안녕하세요? {{name}}님! 환영합니다</p>
</div>
</body>
</html>
이메일 템플릿은 문자열 형태로 들어가기 때문에 JSON Escape 처리가 필요하다. 한국어를 지원하는 사이트에서 Escape 처리한다.
JSON Escape / Unescape Online - AppDevTools
<html>\n <body>\n <div>\n <p>안녕하세요? {{name}}님! 환영합니다</p>\n </div>\n </body>\n</html>
이메일 본문이 동적으로 변경되어야 하는 경우 사용된다. 위의 예시에서는 {{name}}
이 사용되었다.
AWS CLI를 통해 템플릿을 업로드할 수 있다.
$ aws configure
AWS Access Key ID [None]: 엑세스 키
AWS Secret Access Key [None]: 시크릿 엑세스 키
Default region name [None]: ap-northeast-2
Default output format [None]: ENTER
{
"Template": {
"TemplateName": "SignUp-Template",
"SubjectPart": "회원가입을 축하합니다, {{name}}님!",
"HtmlPart": "<html>\n <body>\n <div>\n <p>안녕하세요? {{name}}님! 환영합니다</p>\n </div>\n </body>\n</html>",
}
}
CreateTemplate
API를 통해 템플릿을 생성한다.$ aws ses create-template --cli-input-json file://template.json
템플릿 파일은 로컬 경로가 아닌 파일 프로토콜( file:// )을 통해 경로를 참조한다.
템플릿을 사용하여 이메일을 보낼 수 있는 방법에는 SendTemplatedEmail 및 SendBulkTemplatedEmail 두 가지 API 작업이 있다.
SendTemplatedEmail는 모든 수신자가 동일한 이메일을 수신하고, SendBulkTemplatedEmail은 단일 호출로 수신자들에게 여러 대상으로 이메일을 전송할 수 있다. 아래는 SendTemplatedEmail 예시이다.
{
"Source": "mySite15@gmail.com",
"Template": "SignUp-Template",
"TemplateData": `{"name":"박똑똑"}`,
"Destination": {
"ToAddress": ["minidoo96@gmail.com"]
}
}
{{name}}
). 해당 값은 이메일의 변수를 대체하는 콘텐츠aws ses send-templated-email --cli-input-json file://email.json
템플릿을 사용하여 Amazon SES API를 통해 맞춤형 이메일 전송 - Amazon Simple Email Service
$ npm install @aws-sdk/client-ses
import { SESClient } from '@aws-sdk/client-ses';
const client = new SESClient({
region: 'ap-northeast-2',
credentials: {
accesskeyId: '',
secretAccessKey: ''
}
});
const command = new SendTemplatedEmailCommand({
Source: 'mySite15@gmail.com',
Template: 'SignUp-Template',
TemplateData: `{"name":"박똑똑"}`,
Destination: {
ToAddress: ['minidoo96@gmail.com']
}
});
try {
await client.send(command); // 이메일 전송
} catch(err) {
console.log(err);
}
[ 1 ] AWS SES API를 사용하여 메일 보내기(feat. NodeJS)
https://coding-groot.tistory.com/172