금일 달성 항목
1) 노드 JS 뉴스피드 팀 프로젝트 진행
문제 해결 과정 1- nodemailer 사용
[문제]
이메일을 통해 로그인 인증을 하려면 어떻게 해야하는지 모르는 상황이었습니다. nodemailer라는 라이브러리를 사용하면 된다는데 공부가 필요한 상황이었습니다.
[시도]
https://github.com/nodemailer/nodemailer
GitHub - nodemailer/nodemailer: ✉️ Send e-mails with Node.JS – easy as cake!
✉️ Send e-mails with Node.JS – easy as cake! Contribute to nodemailer/nodemailer development by creating an account on GitHub.
github.com
Nodemailer :: Nodemailer
Nodemailer Nodemailer is a module for Node.js applications to allow easy as cake email sending. The project got started back in 2010 when there was no sane option to send email messages, today it is the solution most Node.js users turn to by default. npm i
nodemailer.com
노드밀러 사용법과 공식 사이트를 통해 내용을 확인해보았습니다.
require("dotenv").config();
const mailer = require("nodemailer");
const Hello = (data) => {
return `
<!DOCTYPE html>
<html style = "margin: 0; padding: 0;">
<head>
<title>이메일 인증하기</title>
</head>
<body style ="margin:0; padding:0; font-size:15px;" >
<div>인증번호는${data}입니다.</div>
</body>
</html>
`;
};
async function sendTemplateToEmail(myemail, mytemplate) {
const transporter = mailer.createTransport({
service: "gmail",
auth: {
user: process.env.NODEMAILER_USER,
pass: process.env.NODEMAILER_PASS,
},
});
const res = await transporter.sendMail({
from: process.env.NODEMAILER_USER,
to: "xkdldjaos@naver.com",
subject: "[피기패스]인증번호를 입력해주세요",
html: Hello(String(Math.floor(Math.random() * 1000000)).padStart(6, "0")),
});
console.log(res);
}
sendTemplateToEmail();
위와 같이 해당 이메일로 들어오는 것을 확인하고
[해결]
아래와 같이 최종적으로 수정하였습니다.
require('dotenv').config();
const crypto = require('crypto');
const { SECRET_KEY, NODEMAILER_USER, NODEMAILER_PASS, HOST } = process.env;
const express = require('express');
const router = express.Router();
const { Users } = require('../models');
const { signInValidation, signUpValidation, editPasswordValidation } = require('../middlewares/Validations/usersValidation');
const authMiddleware = require('../middlewares/auth-middleware');
const nodemailer = require('nodemailer');
const { off } = require('process');
let transporter = nodemailer.createTransport({
// 사용하고자 하는 서비스, gmail계정으로 전송할 예정이기에 'gmail'
service: 'gmail',
// host를 gmail로 설정
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: {
// Gmail 주소 입력, 'testmail@gmail.com'
user: NODEMAILER_USER,
// Gmail 패스워드 입력
pass: NODEMAILER_PASS,
},
});
[알게된 점]
다양한 라이브러리들을 있는데 잘 쓰는 것도 개발자의 역량중 하나라고 생각했습니다.
앞으로 더 많이 공부해야할 것 같습니다.