: Node.js에서 사용하는 이메일 전송 라이브러리
- Emoji를 포함한 Unicode를 지원
- Plain text는 물론이고, HTML content를 사용
- SMTP 를 포함한 다양한 전송 방식을 지원
- OAuth2 인증방식을 지원
- 그 외 자세한 정보는 공식 사이트 (https://nodemailer.com/about/)
[ 적용하기 ]
1) Naver 메일 SMTP 사용 설정
- 사실 Gmail도 많이 쓰지만 / Gmail은 하루에 500개가 제한이라서 Naver 이용 !
2) nodemailer 설치
npm install nodemailer --save
또는
yarn add nodemailer --dev
3) 관련 코드 작성
(/config/email.js)
const nodemailer = require('nodemailer'); const smtpTransport = nodemailer.createTransport({ service: "Naver", auth: { user: "YourEmail@naver.com", pass: "YourPasswor" }, tls: { rejectUnauthorized: false } }); module.exports={ smtpTransport }
- 실제 계정의 정보가 들어있으므로
/config
에 위치한다- 보호되어야 하는 파일이기 때문에
.gitignore
에 등록해야 한다 ! 꼭 !
(/controllers/user.js)
const { smtpTransport } = require('../config/email'); ... /* min ~ max까지 랜덤으로 숫자를 생성하는 함수 */ var generateRandom = function (min, max) { var ranNum = Math.floor(Math.random()*(max-min+1)) + min; return ranNum; } const auth = { SendEmail : async(req, res) => { const number = generateRandom(111111,999999) const { sendEmail } = req.body; const mailOptions = { from: "정욱이네러버덕", to: sendEmail, subject: "[러버덕]인증 관련 이메일 입니다", text: "오른쪽 숫자 6자리를 입력해주세요 : " + number }; const result = await smtpTransport.sendMail(mailOptions, (error, responses) => { if (error) { return res.status(statusCode.OK).send(util.fail(statusCode.BAD_REQUEST, responseMsg.AUTH_EMAIL_FAIL)) } else { /* 클라이언트에게 인증 번호를 보내서 사용자가 맞게 입력하는지 확인! */ return res.status(statusCode.OK).send(util.success(statusCode.OK, responseMsg.AUTH_EMAIL_SUCCESS, { number: number })) } smtpTransport.close(); }); } }
- 랜덤한 6자리 번호를 생성시켜 메일 전송에 성공하면 클라에게 response!
- 클라이언트에서 해당 번호와 사용자가 입력한 번호를 비교하여 처리 !