본문 바로가기

Infra/aws

Amazon SES, aws-sdk-js-v3를 이용해 이메일 보내기

 

1. Verified identities 등록 

- Amazon SES 를 사용해서 이메일을 보내기 위해서는 먼저 email의 도메인이나 email 주소 확인작업을 먼저 진행해야한다. (여기서는 단일 이메일로 진행)

- SES 콘솔에서 Configuration>Verified identities> Create identity

- Identity type을 Email address로 선택하고 아래에 본인 이메일을 적어주고 Create identity 버튼을 눌러주면 aws 에서 등록한 이메일 주소로 확인 메일을 보내준다 .

 

- 확인 링크를 클릭하면 이제 해당 이메일주소로 SES 서비스를 이용할 수 있다. 

 

2. 사용자 권한 등록 

- aws-sdk 로 이메일을 보내기 위한 권한은 다음과 같다 

"ses:SendEmail", "ses:SendTemplatedEmail", "ses:SendRawEmail"

- 해당 권한들이 aws 사용자 권한에 등록되어 있어야 한다. 

 

3. aws-sdk/client-ses 패키지 설치

- 본인의 프로젝트에 aws-sdk/client-ses 패키지를 설치한다. (여기서 사용한 버전은 3.131.0 이다)

$ yarn add @aws-sdk/client-ses 
or
$ npm install @aws-sdk/client-ses

4. 코드 작성 

//전송할 이메일 form
const message : Message = { 
  Body: {
    /* required */
    Html: {
      Charset: "UTF-8",
      Data: "HTML_FORMAT_BODY",
    },
    Text: {
      Charset: "UTF-8",
      Data: "TEXT_FORMAT_BODY",
    },
  },
  Subject: {
    Charset: "UTF-8",
    Data: "EMAIL_SUBJECT",
  },
} 
const sourceEmail = "SES 콘솔에서 등록한 본인의 이메일"
const destinationEmails = ["해당 메일을 받을 이메일주소",]

const sendEmail = async () => {
  const sesClient = createSesClient()
  const sendEmailCommand = createSendEmailCommand()
  return await sesClient.send(sendEmailCommand);
};

const createSesClient = () => {
  const config: SESClientConfig = {
    credentials: {
      accessKeyId: access_key_id, //본인의 access key id 
      secretAccessKey: secret_access_key, //본인의 secret access key
    },
    region : region, //전송하는 region
  };

  return new SESClient(config);
}

const createSendEmailCommand = () => {
  const sendEmailCommandInput: SendEmailCommandInput = {
    Destination: {
      ToAddresses: destinationEmails,
    },
    Message: message,
    Source: sourceEmail
  };

  return new SendEmailCommand(sendEmailCommandInput);
}

- sendEmail 함수를 실행하면 destination에 등록한 이메일주소로 메일이 발송된다. 

- credential을 하는 방법은 여러가지가 있지만 여기서는 단순하게 사용자의 accessKeyId와 secretAccessKey로 진행했다. 

 

 

참고

공식문서 : https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v3/developer-guide/ses-examples-sending-email.html