-
[NodeJS] nodemailer 모듈을 이용하여 메일 전송하는 법Server/NodeJS 2020. 11. 2. 10:28728x90반응형
이번 글에서는 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에 메일을 담아서 요청을 보냈다.
그러면 위와 같은 것이 콘솔에 찍히는 것을 확인할 수 있다. 이것은 구글 계정에 대한 로그인이 되지 않았다는 오류인데, 이 오류의 해결은 여기를 클릭해서 "사용함"으로 바꾸면 된다. 테스트가 끝나면 다시 "사용안함"으로 바꿔놓자. (혹시나,,)
그러면 위와 같이 메일이 제대로 도착한 것을 확인할 수 있다.
Reference
반응형'Server > NodeJS' 카테고리의 다른 글
[NodeJS] Passport로 카카오 로그인 구현하기 (0) 2020.10.27 [NodeJS] 몽구스(Mongoose) 사용하여 CRUD 해보기 (1) 2020.10.23 [NodeJS] Sequelize를 이용하여 CRUD 해보기 (0) 2020.10.23 [NodeJS] Sequelize : ORM(Object-relational Mapping) 사용하기 (0) 2020.10.18 [NodeJS] KAKAO BOOK OPEN API 사용하는 법 (0) 2020.08.14