Node 이메일 인증 구현하기

이한형·2021년 11월 4일
1

이메일 인증

회원가입을 할때 이메일 인증을 많이 합니다.
가입하는 이메일로 인증코드를 보내서 비교를 하는 방식입니다.

우선 저는 Nodejs환경에서 Node mailer를 이용하여 구현을 하였습니다.
메일 전송은 Gmail을 이용했습니다.

Gmail 설정

우선 아래 링크들을 클릭하여서 설정을 활성화해야합니다. 이 설정들을 해야 구글 계정에 접근을 할 수 있습니다.

https://myaccount.google.com/lesssecureapps

https://accounts.google.com/DisplayUnlockCaptcha

Node mailer

우선 프로젝트 환경에서 nodemailer 설치합니다.

npm install nodemailer

Node mailer 설정

const nodemailer = require('nodemailer');


export const transPort = nodemailer.createTransport({
    service: 'gmail',
    host: 'smtp.gmail=.com',
    port: 587,
    secure: false,
    auth: {
        user: '계정@gmail.com',
        pass: '비밀번호'
    }
});

Mail 보내기

이제 이메일 인증을 위해서 랜덤 6자리 숫자들과 함께 메일을 보내야하겠죠?
소스코드는 다음과 같습니다.

import { transPort } from "../../config/email";

## 랜덤 6자리 숫자
const generateRandom = function(min, max) {
    const randomNumber = Math.floor(Math.random() * (max-min+1)) + min;
    return randomNumber
}


const number = generateRandom(111111, 999999)

const mailOptions = {
            from: '보내는 사람',
            to: '받는 사람',
            subject: '제목',
            text: '인증 코드입니다. ' + number
        };

        transPort.sendMail(mailOptions, function(error, info) {
            if (error) {
                ctx.state = 500;
            }
        })

정리

기본 적인 로직들은 위에 작성한 예제와 같아요
저 같은 경우에는 node server로 이메일 인증 요청이 api를 통해서 들어오면 해당 유저에게 이메일을 보내고 다시 클라이언트에 응답으로 인증 코드를 반환해줍니다. 그러면 클라이언트 측에서 유저 입력과 서버 측에서 반환한 코드를 비교해주면됩니다.

profile
풀스택 개발자를 지향하는 개발자

0개의 댓글