Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JS Coding

[Node.js] Node.js 메일 전송 하는 코드(인증코드 전송) 본문

JavaScript

[Node.js] Node.js 메일 전송 하는 코드(인증코드 전송)

JSKJS 2024. 4. 23. 22:42

기본적인 node 설치와 세팅이 되어 있다는 가정하에 시작한다.

 

import nodemailer from 'nodemailer';
 
노드 메일러를 npm install nodemailer 를 터미널에 입력하여 다운로드 한다.
package.json 에 dependencies 목록에 잘 들어왔는지 체크 후
 
위 코드를 사용하기 위한 js 파일 상단 import 하기 위해 모인 곳에 써놓는다.

 

export const changePasswordAuthCodeMailSend = async (body) => {
	const authCode = RandomCode(6);
	authPWcode = authCode;

	const receiveUser = body.receiveUser;
	// 메일 보내는 송신자 .env에 메일 & 2차인증 번호 등록 필수 / 메일 별 설정 필요
	if (receiveUser !== null || receiveUser !== '') {
		let transport = nodemailer.createTransport({
			service: 'gmail',
			prot: 587,
			host: 'smtp.gmail.com',
			secure: false,
			requireTLS: true,
			auth: {
				user: process.env.NODEMAILER_USER,
				pass: process.env.NODEMAILER_PASS,
			},
		});

		let mailOptions = {
			from: `"WIT" <${process.env.NODEMAILER_USER}>`,
			to: receiveUser,
			subject: 'WIT 비밀번호 찾기 인증 번호 발송',
			html: `<h1>비밀번호 찾기 인증코드 </h1>
			<div>
				인증코드 [${authCode}]를 입력하시고 비밀번호 찾기 진행 해주세요.
			</div>`,
		};

		transport.sendMail(mailOptions, function (error, info) {
			if (error) {
				throw new HttpException(400, {
					error: { receiveUser: ['Send Mail Fail'] },
				});
			} else {
				console.log('Email sent: ' + info.response);
			}
		});
	} else {
		throw new HttpException(400, {
			errors: { receiveUser: ['cant not blank'] },
		});
	}
};

 

 

위에 코드를 보면
nodemailer.createTransport  를 통해 메일을 보내는 송신자의 정보를 지정하고 세팅 한다.
작성자는 gmail을 사용 하였고, 개인 정보를 위해 메일주소와 2차인증코드는 .env에 따로 세팅하여 불러오는 식으로 
보안성을 키웠다.
 
mailOption 에는 보내고자 하는 제목과 내용 그리고 수신자의 메일을 입력하여 세팅한다.
여기서 일반적인 text만 써서 보낼 수 있는게 아니라 html 형식을 갖추어 보낼수도 있다.
 
인증번호를 보내는 메일을 만들었는데 , 여기서 인증코드는 random 함수를 이용하여  0~9 자리 수를 6자리 만들어 보내도록 하였다. 
 
transport.sendMail 을 통해서 메일이 진짜 전송 되도록 해준다.
if 문법을 통해 메일 전송 이후의 알고리즘은 프로젝트의 성향이나 규정화에 맞춰 개발하면 되겠다.