사용자에게 메일주소를 받아 SMTP를 사용하여 메일을 보내는 방법들이 있다.
과거 학생때는 이를 구글 계정 설정에서 "보안 수준이 낮은 앱의 액세스"를 허용하여 프로그램과 연결해서 사용했었다. 하지만 2022년 5월 30일부로 이 기능에 대해 지원이 중지되어 더이상 사용할 수 없게되었다.
그래서 찾아보다 발견한 것이 "AWS SES" (Simple Email Service) 였다.
이 글은 Nodejs를 기반으로 작성되었습니다.
프리티어는 매 달 62,000건의 메세지까지는 무료이고 요금은 아래와 같다.
우선 AWS SES에 접속하여준다.
오른쪽의 Create Identity를 클릭하여 자격증명에 들어간다.
자격증명을 할 이메일을 적어준다.
메일에 들어가 aws 측에서 온 메일을 5분 안에 확인하고 링크를 클릭하여 자격 증명을 해준다.
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);
},
);
}