[ AWS ] SES 이메일 서비스

minidoo·2023년 4월 10일
0

클라우드

목록 보기
6/6
post-thumbnail

01. 사용자 권한 설정

권한 추가

IAM 사용자에 AmazonSESFullAccess 권한을 추가한다.

이메일 또는 도메인 인증

AWS에서 인증한 메일(또는 도메인)만 이메일 주소로 사용할 수 있다.

AWS SES 콘솔의 ‘확인된 자격 증명’을 통해 등록할 수 있다. 자격 증명 생성을 통해 이메일 주소를 입력하고, 이메일 인증을 통해 완료한다. ( Creating and verifying identities in Amazon SES )

발신자, 수신자 모두 인증된 이메일만 사용할 수 있는데 제약을 없애고 싶다면 SandBox 탈출 신청서를 AWS에 제출해야 한다. ( 프로덕션용 업그레이드 신청 )
Amazon SES 샌드박스 환경에서 나가기

02. 이메일 템플릿 작성

<html>
  <body>
    <div>
      <p>안녕하세요? {{name}}님! 환영합니다</p>
    </div>
  </body>
</html>

이메일 템플릿은 문자열 형태로 들어가기 때문에 JSON Escape 처리가 필요하다. 한국어를 지원하는 사이트에서 Escape 처리한다.
JSON Escape / Unescape Online - AppDevTools

JSON Escape 결과

<html>\n  <body>\n    <div>\n      <p>안녕하세요? {{name}}님! 환영합니다</p>\n    </div>\n  </body>\n</html>

태그

이메일 본문이 동적으로 변경되어야 하는 경우 사용된다. 위의 예시에서는 {{name}} 이 사용되었다.

03. 이메일 템플릿 생성

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
  1. 텍스트 편집기에서 새로운 파일을 생성한다. ( template.json )
{
	"Template": {
		"TemplateName": "SignUp-Template",
		"SubjectPart": "회원가입을 축하합니다, {{name}}님!",
		"HtmlPart": "<html>\n  <body>\n    <div>\n      <p>안녕하세요? {{name}}님! 환영합니다</p>\n    </div>\n  </body>\n</html>",
	}
}
  • TemplateName : 템플릿의 이름. AWS Console에 표시될 이름으로, 이메일 보낼때 참조한다.
  • SubjectPart : 이메일의 제목
  • HtmlPart : 이메일의 HTML 본문. 이 속성에는 대체 태크가 포함될 수 있다.
  1. 명령을 입력하여 CreateTemplate API를 통해 템플릿을 생성한다.
$ aws ses create-template --cli-input-json file://template.json

템플릿 파일은 로컬 경로가 아닌 파일 프로토콜( file:// )을 통해 경로를 참조한다.

04. 이메일 보내기

CLI 사용하기

템플릿을 사용하여 이메일을 보낼 수 있는 방법에는 SendTemplatedEmail 및 SendBulkTemplatedEmail 두 가지 API 작업이 있다.

SendTemplatedEmail는 모든 수신자가 동일한 이메일을 수신하고, SendBulkTemplatedEmail은 단일 호출로 수신자들에게 여러 대상으로 이메일을 전송할 수 있다. 아래는 SendTemplatedEmail 예시이다.

  1. 테스트 편집기에서 새로운 파일을 생성한다. ( email.json )
{
	"Source": "mySite15@gmail.com",
	"Template": "SignUp-Template",
	"TemplateData": `{"name":"박똑똑"}`,
	"Destination": {
		"ToAddress": ["minidoo96@gmail.com"]
	}
}
  • Source : 발신자 이메일 주소
  • Template : 이메일에 적용할 템플릿 이름
  • TemplateData : 템플릿의 변수(예: {{name}}). 해당 값은 이메일의 변수를 대체하는 콘텐츠
  • Destination : 수신자 주소
  1. 명령을 입력하여 이메일을 전송한다.
aws ses send-templated-email --cli-input-json file://email.json

템플릿을 사용하여 Amazon SES API를 통해 맞춤형 이메일 전송 - Amazon Simple Email Service

SDK V3 사용하기

  1. AWS SDK V3 설치하기
$ npm install @aws-sdk/client-ses
  1. 이메일 보내기
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);
}

Amazon SES SES를 사용하여 이메일 보내기

참고 문서

[ 1 ] AWS SES API를 사용하여 메일 보내기(feat. NodeJS)
https://coding-groot.tistory.com/172

0개의 댓글