[TIL] 이메일 인증 구현하기

sooyoung choi·2023년 12월 12일
1

Javascript, Node.js

목록 보기
34/37
post-thumbnail

Nodemailer

  • 메일 전송 Node.js 모듈

nodemailer 사용하여 이메일 인증 번호 보내보자!


1. Gmail 계정 보안 설정하기

  • 2단계 인증 사용하기

  • 제일 하단에 위치한 앱 비밀번호를 생성해준다.

  • 생성된 앱 비밀번호(16자리)를 잘 복사해둔다.


2. Nodemailer 설치

npm install nodemailer dotenv

3. .env 파일 설정하기

MAILS_EMAIL='보내는 사람의 메일 주소'
MAILS_PWD='생성된 앱 비밀번호 16자리(띄어쓰기는 빼줘야 함)'

4. 코드 작성하기

const nodemailer = require("nodemailer");
const dotenv = require("dotenv").config();

const transporter = nodemailer.createTransport({
  service: "gmail",	// gmail 사용
  auth: {
    user: process.env.MAILS_EMAIL,	// env 파일 내 보내는 사람의 메일 주소
    pass: process.env.MAILS_PWD,	// env 파일 내 생성된 앱 비밀번호 16자리
  },
});

// 랜덤 인증번호 생성 함수
const randomStrFunc = (num) => {
  const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  let result = "";
  const randomMaxLength = characters.length;
  for (let i = 0; i < num; i++) {
    result += characters.charAt(Math.floor(Math.random() * randomMaxLength));
  }

  return result;
};

let randomStr = randomStrFunc(10);

 async function main() {
    await transporter.sendMail({
      from: process.env.MAILS_EMAIL, // env 파일 내 보내는 사람의 메일 주소
      to: "sooyoung.choi.dev@gmail.com", // 받는 사람
      subject: "👋 2거주세요 가입 인증번호입니다.", // 제목
      text: `인증번호는 ${randomStr} 입니다.`, // 메일 내용
      // html: "<b>Hello world?</b>", // html 보내줄 수도 있음
    });
  }
  main().catch(console.error);

5. 실행 후 메일 확인

// 실행 
node app.js

2개의 댓글

comment-user-thumbnail
2023년 12월 12일

아이고 늦은 시간에 열심히 공부하시네요~ 탄력 받아 갑니다~~

1개의 답글