TIL

TIL 240607 - nodemailer

lemonpie611 2024. 6. 7. 14:26

코드를 실행했을 때, 자동으로 이메일을 보내주는 모듈이다.

 

1. nodemailer로 이메일을 보내는 코드

yarn을 이용해서 패키지 설치

yarn add nodemailer

 

nodemailer을 활용한 코드

transporter에 보내는 사람의 이메일 계정 정보를 입력하고, mailOptions에 받을 사람의 이메일 주소를 입력한다.

파일은 분리시켜놓긴 했는데, 이게 미들웨어는 아니라서 굳이 분리 안해도 되긴 한다.

mail에 있는 코드를 router 안에 집어넣고 req.body에서 받을 이메일주소를 입력받아 해당 주소로 메일을 보낼 수 있도록 할 수 있다.

// mail.js
import nodemailer from 'nodemailer';
import dotenv from 'dotenv';
dotenv.config();

const { EMAIL_SERVICE, USER, PASS } = process.env;

const transporter = nodemailer.createTransport({
    service: EMAIL_SERVICE,
    auth: {
      user: USER, //내 이메일 주소
      pass: PASS, //내 이메일 비밀번호
    },
  });

const mailOptions = {
  from : USER,
  to: 'mailaddress@gmail.com',
  subject: 'Nodemailer Test',
  text: '노드 패키지 nodemailer를 이용해 보낸 이메일임'
};

export { transporter, mailOptions }
//mail.router.js
import express from 'express';
import { transporter, mailOptions } from './mail.js';

const router = express.Router();

router.post('/mail', async (req, res) => {

    transporter.sendMail(mailOptions);

    res.send({data: "완료!!"})
})

export default router;
//app.js
import express from 'express';
import dotEnv from "dotenv";
import multerRouter from './multer.router.js';
import mailRouter from './mail.router.js';

dotEnv.config();

const app = express();

app.use('/upload', multerRouter);
app.use('/mailer', mailRouter);

app.get('/', (req, res) => {
    res.json('ㅇㅋ')
})

app.listen(3000, () => {
    console.log("서버 실행");
});

 

2. 이메일 계정에 접근하지 못해 에러가 발생하는 경우 > 네이버 설정 변경

네이버 메일 > 환경설정 > POP3/SMTP 설정 > 'POP3/SMTP 사용함'으로 변경 > 'IMAP/SMTP 사용함'으로 변경