[NodeJS] nodemailer 모듈을 이용하여 메일 전송하는 법
이번 글에서는 NodeJS - Express를 이용해서 메일 전송을 하는 법에 대해 정리해보려 한다. nodemailer는 node서버에서 메일을 보낼 수 있는 메일 전송 모듈인데 이것을 이용하려 한다.
프로젝트 세팅
Express 프로젝트이름
ex) Express NodeJS_mailer
npm install
npm install nodemailer (모듈 설치)
그러면 위와 같이 프로젝트 구조를 볼 수 있을 것이다. (config, mail.js는 필자가 만든 것이다.) 이제 config 폴더와 routes 아래에 mail.js를 만들어보자.
1. config/senderInfo.json
먼저 config 폴더 아래 json형태의 파일을 하나 만들어주자. 해당 파일에는 보내는 이메일, 비밀번호를 입력할 것이기 때문에 반드시 .gitignore에 추가해두자. (혹시나 github에 올린다면,,)
{
"user": "본인의 이메일",
"pass": "이메일 비밀번호"
}
위와 같이 본인이 메일을 보낼 이메일과 그 이메일의 비밀번호를 입력해주면 된다.
2. mail.js
이번에는 mail 모듈을 만들 것이다.
const nodemailer = require('nodemailer');
const senderInfo = require('../config/senderInfo.json');
// 메일발송 객체
const mailSender = {
// 메일발송 함수
sendGmail: function (param) {
var transporter = nodemailer.createTransport({
service: 'gmail', // 메일 보내는 곳
prot: 587,
host: 'smtp.gmlail.com',
secure: false,
requireTLS: true ,
auth: {
user: senderInfo.user, // 보내는 메일의 주소
pass: senderInfo.pass // 보내는 메일의 비밀번호
}
});
// 메일 옵션
var mailOptions = {
from: senderInfo.user, // 보내는 메일의 주소
to: param.toEmail, // 수신할 이메일
subject: param.subject, // 메일 제목
text: param.text // 메일 내용
};
// 메일 발송
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
}
module.exports = mailSender;
사용법은 위와 같다. 공식문서에서 보면 자세하게 알 수 있지만 여기서 같이 볼 곳은 service에 보내는 이메일을 적어주면 된다. 필자는 Gmail을 사용할 것이기 때문에 Gmail을 적었다. 그리고 auth 안에 config 에서 만들어주었던 이메일 주소와 비밀번호를 입력해주면 된다.
좀 더 코드에 대해 자세히 알고 싶다면 공식문서에서 확인해보자.
index.js
const express = require('express');
const router = express.Router();
const mailer = require('./mail');
router.get('/mail', (req, res) => {
const { email } = req.body;
let emailParam = {
toEmail: email, // 수신할 이메일
subject: 'New Email From Gyunny', // 메일 제목
text: `Gyunny 회원님!` // 메일 내용
};
mailer.sendGmail(emailParam);
res.status(200).send("성공");
})
module.exports = router;
클라이언트로 부터 메일 주소를 받아서 받은 메일 주소에게 메일을 보낼 것이다.
위와 같이 포스트맨을 이용하여 Request Body에 메일을 담아서 요청을 보냈다.
그러면 위와 같은 것이 콘솔에 찍히는 것을 확인할 수 있다. 이것은 구글 계정에 대한 로그인이 되지 않았다는 오류인데, 이 오류의 해결은 여기를 클릭해서 "사용함"으로 바꾸면 된다. 테스트가 끝나면 다시 "사용안함"으로 바꿔놓자. (혹시나,,)
그러면 위와 같이 메일이 제대로 도착한 것을 확인할 수 있다.