AWS SES (with aws-sdk)

hs·2022년 6월 9일

사용자에게 메일주소를 받아 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개의 댓글