반응형
프로젝트에서 nodemailer를 사용을 했다... 4시간이나 삽질을 해서 다음에는 해매지않도록 기록을 해두려고 한다.
먼저 패키지를 설치해야한다.
npm i -s nodemailer
패키지를 설치하면 package.json이 다음처럼 변경된다.
{
"name": "back",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"morgan": "~1.9.1",
"mysql2": "^2.3.3",
"nodemailer": "^6.7.2",
"sequelize": "^6.12.0-beta.3",
"sequelize-auto": "^0.8.8",
"sequelize-cli": "^6.3.0"
}
}
메일 모듈을 생성하기전, config 폴더에 따로 계정정보를 저장한다.
{
"user": "user",
"pass": "pass"
}
설치하고 난 후 mail.js에 메일 모듈을 생성한다.
const nodemailer = require('nodemailer');
const senderInfo = require('../config/email.json');
// 메일발송 객체
let mailSender = {
// 메일발송 함수
sendGmail(param) {
let transporter = nodemailer.createTransport({
service: 'gmail', // 메일 보내는 곳
prot: 587,
host: 'smtp.gmlail.com',
secure: false,
requireTLS: true ,
auth: {
user: senderInfo.user, // 보내는 메일의 주소
pass: senderInfo.pass // 보내는 메일의 비밀번호
}
});
// 메일 옵션
let mailOptions = {
from: senderInfo.user, // 보내는 메일의 주소
to: param.toEmail, // 수신할 이메일
subject: param.subject, // 메일 제목
text: param.text // 메일 내용
};
// 메일 발송
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
}
module.exports = mailSender;
메일을 여러 Router에서 사용할 수도 있기 때문에 별도의 mail.js 모듈을 생성했다.
공통 모듈을 만들고난 후의 사용 예제는 다음과 같다.
const express = require('express');
const router = express.Router();
let mailer = require('../auth/mail');
router.post('/mail', async(req, res) => {
const { email } = req.body;
const min = 111111;
const max = 999999;
const ranNum = Math.floor(Math.random() * (max - min - 1)) + min;
let emailParam = {
toEmail: email, // 수신할 이메일
subject: `[slack_clone]인증 관련 메일 입니다`, // 메일 제목
text: `오른쪽 숫자 6자리를 입력해주세요 : ${ranNum}` // 메일 내용
};
mailer.sendGmail(emailParam);
res.status(200).send("성공");
});
module.exports = router;
할일이 많이 남아있다... 좀만 더 힘내자...
반응형
'개발 > Node.js (NestJS)' 카테고리의 다른 글
[Node.js] Cookie 공부 (0) | 2022.01.07 |
---|---|
[Node.js] Node.js에 MVP 패턴을 적용하기 (0) | 2021.12.24 |
[Node.js] dotenv 적용하기 (0) | 2021.12.24 |
[Node.js] Sequelize Model 설정 (0) | 2021.12.18 |
[Node.js] Express + Sequelize + Mysql로 Backend 구축 (0) | 2021.12.13 |