AWS SES (with aws-sdk)

hs·2022년 6월 9일
2

사용자에게 메일주소를 받아 SMTP를 사용하여 메일을 보내는 방법들이 있다.
과거 학생때는 이를 구글 계정 설정에서 "보안 수준이 낮은 앱의 액세스"를 허용하여 프로그램과 연결해서 사용했었다. 하지만 2022년 5월 30일부로 이 기능에 대해 지원이 중지되어 더이상 사용할 수 없게되었다.

그래서 찾아보다 발견한 것이 "AWS SES" (Simple Email Service) 였다.

이 글은 Nodejs를 기반으로 작성되었습니다.

프리티어는 매 달 62,000건의 메세지까지는 무료이고 요금은 아래와 같다.

사용

우선 AWS SES에 접속하여준다.

오른쪽의 Create Identity를 클릭하여 자격증명에 들어간다.

자격증명을 할 이메일을 적어준다.
메일에 들어가 aws 측에서 온 메일을 5분 안에 확인하고 링크를 클릭하여 자격 증명을 해준다.

aws-sdk

aws-sdk에서 사용할 IAM을 생성해주고 액세스키와 비밀키를 가져와 저장해준다.
아래 코드를 형식에 맞게 작성하고 보내주면 된다.

import nodemailer from 'nodemailer';
import dotenv from 'dotenv';
import AWS from 'aws-sdk';
import { logger } from './winstonLog';

AWS.config.update({ region: (SES 리전) });

const transporter = nodemailer.createTransport({
    host: 'email-smtp.(SES 리전).amazonaws.com',
    port: 465,
    secure: true,
    auth: {
        user: (IAM 액세스 키 ID),
        pass: (IAM 비밀키),
    },
});

export function SendMail(email: string, link: string | undefined) {
    transporter.sendMail(
        {
            from: (보내는 메일 주소(어디서)),
            to: (보낼 메일 주소(어디로)),
            subject: (메일 제목),
            html:(메일 내용)
        },
        (err: any, info: { envelope: object; messageId: string }) => {
            if (err) {
                logger.error(err);
            }
            logger.info('sendEmail: ' + JSON.stringify(info.envelope));
            logger.info(info.messageId);
        },
    );
}
profile
무엇이든 끝까지 보람차게

0개의 댓글