노드 메일러 이메일전송

안녕하세요·2024년 2월 7일

react x node 

목록 보기
16/18

먼저 npm install nodemailer 로 npm 설치후

네이버 메일 환결설정에서

POP3/IMAP 클릭후

IMAP/SMTP 설정을 사용함으로 변경하면 준비끝

const transporter = nodemailer.createTransport({
	service: 'naver',
	host: 'smtp.naver.com',  // SMTP 서버명
	port: 587,  // SMTP 포트
	auth: {
		user: process.env.NAVER_ID,  // 네이버 아이디
		pass: process.env.NAVER_PASS,  // 네이버 비밀번호
	},
});

host와 port는 IMAP/SMTP설정할때 하단에 나옴


function generateRandomNumbers(min, max, count) {
    let numbers = [];

    while (numbers.length < count) {
        let n = Math.floor(Math.random() * (max - min + 1)) + min;
        if (!numbers.includes(n)) {
            numbers.push(n);
        }
    }

    return numbers.join('');
}


export async function emailCheck(req, res) {
    let {data} = req.body
    let mail = data
    const randomNumbers = generateRandomNumbers(1, 9, 6);
    const mailOptions = {
        from: process.env.NAVER_ID,
        to: mail,
        subject: "인증 관련 메일 입니다.",
        html: `<h1>인증번호를 입력해주세요 ${randomNumbers}</h1>`
    };

    try {
        const response = await transporter.sendMail(mailOptions);
        // console.log("Mail Sent Response:", response);
        res.json({ ok: true, msg: '메일 전송에 성공하였습니다.', authNum: randomNumbers });
    } catch (err) {
        // console.error("Send Mail Error:", err);
        res.json({ ok: false, msg: '메일 전송에 실패하였습니다.' });
    } finally {
        transporter.close(); // 전송 종료
    }
}

이렇게 하면 이메일 인증번호 전송 완료

0개의 댓글