목표 : 회원가입시 이메일을 통해 본인인증하려고함. 네이버 SMTP 서버를 활용해서 인증번호 전송하고 확인해서 회원가입 진행.
⦁ 랜덤숫자와 숫자+문자조합 고민
⦁ 인증번호는 6자리로 정함
⦁ Math.random() : 0과 1사이 랜덤 소수 생성
const code = () => {
return Math.floor(100000 + Math.random() * 900000).toString();
};
const code = () => {
return Math.random()
.toString(36) // 0.qw3rty
.slice(2, 8)
.toUpperCase();
};
⦁ 네이버 메일 > 왼쪽 네비 환경설정
⦁ POP3/IMAP 설정 > IMAP/SMTP 사용함 저장
⦁ 백엔드 npm init -y (Node.js 프로젝트 초기화 package.json 파일 생성)
⦁ 백엔드 npm i express nodemailer dotenv cors
⦁ .env 파일생성
📌 환경변수에 특수문자 있을경우 다른 의미로 해석되는 것을 방지하기위해 큰따옴표("") 또는 작은따옴표('') 사용하기📌
EMAIL_USER=email@naver.com
EMAIL_PASS=email_password
⦁ index.js 파일생성
const nodemailer = require("nodemailer");
require("dotenv").config();
// SMTP 설정
const transporter = nodemailer.createTransport({
host: "smtp.naver.com",
port: 587,
secure: false,
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS,
},
});
// 이메일 전송 API
app.post("/sendemail", async (req, res) => {
const { email } = req.body;
console.log("이메일:", email);
const code = Math.random().toString(36).slice(2, 8).toUpperCase();
const mailOptions = {
from: process.env.EMAIL_USER,
to: email,
subject: "[ ] 이메일 인증코드를 확인해주세요.",
text: `안녕하세요. 이메일 확인을 위한 인증코드를보내드립니다. 기록 인증 코드는 ${code}입니다.`,
};
try {
await transporter.sendMail(mailOptions);
return res.status(200).json({ message: "이메일 발송 성공", code });
} catch (error) {
console.error("이메일 전송 실패:", error);
return res.status(500).json({ message: "이메일 발송 실패" });
}
});
![]() | ![]() |
|---|