
npm i nodemailer
const nodemailer = require('nodemailer');
NODEMAILER_USER= "본인의 gmail 주소"
NODEMAILER_PASS= "본인의 gmail 2단계 비밀번호"
function generateRandomCode(n) {
let str = '';
for (let i = 0; i < n; i++) {
str += Math.floor(Math.random() * 10);
}
return str;
}
const nodemailer = require('nodemailer'); // 라이브러리 불러옴
let code = ''; // 랜덤 코드가 담길 변수 선언
// 메일 보내는 함수
const sendGmail = (_userEmail) => {
code = generateRandomCode(6); // 6자리 랜덤 코드 생성
console.log(_userEmail, code);
// 보내는 메일 설정
let transporter = nodemailer.createTransport({
service: 'gmail', // gmail로 메일을 보낼 것이기 때문에 gmail로 설정
prot: 587,
host: 'smtp.gmlail.com',
secure: false,
requireTLS: true,
auth: {
user: process.env.NODEMAILER_USER, // 보내는 메일의 주소
pass: process.env.NODEMAILER_PASS // 보내는 메일의 2차 비밀번호
}
});
// 메일 옵션 설정
let mailOptions = {
// from : 보여질 메일 앞 이름과 보내는 메일의 주소
from: `"HYERIM" <${process.env.NODEMAILER_USER}>`,
to: _userEmail, // 수신할 이메일
subject: "[HYERIM TEST] 인증번호를 입력해주세요.", // 메일 제목
// text: `인증번호 [${code}]를 인증 창에 입력하세요.`, // 메일 내용
html: `<h1>이메일 인증</h1>
<div>
인증번호 [${code}]를 인증 창에 입력하세요.
<a href='www.efforthye.com'>금쪽이스토리로가기</a>
</div>`,
};
// 메일 발송
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
<div onClick={async () => {
const mail = prompt("인증번호를 보낼 메일을 작성해주세요.");
// sendMail();
const mailSend = await axios.post("http://localhost:8080/board/mail/mailSend", {
mail : mail
});
// 인증번호
console.log(mailSend.data);
}}>
클릭시 이메일 보내기
</div>
router.post("/mailSend", (req, res) => {
sendGmail(req.body.mail);
res.send(code);
});



