여행가자[사이드 프로젝트]

[node-mail] node-mail 사용 예시

j9972 2023. 10. 10. 20:43
728x90

Nodemailer 이란?

Node.js 환경에서 email을 보내주도록 도와주는 모듈이다.

 

Nodemailer 특징

  • 종속성이 없는 단일 모듈이다.
  • 보안에 매우 집중되어 있다.
  • emoji를 포함한 어떠한 문자열도 사용할 수 있는 유니코드를 지원한다.
  • Windows OS 를 지원한다.
  • HTML content 를 사용하며, HTML 이 지원되지 않은 mail service 를 위해 plain text 또한 대체제로 사용할 수 있다.
  • 메일 내용에 첨부파일을 추가할 수 있다.
  • HTML content에 이미지 첨부 데이터를 임베드할 수 있다.
  • DKIM 키로 메일에 서명할 수 있다.
  • 메세지 처리를 위한 커스텀 플러그인을 지원한다.
  • 안정적인 OAuth2 인증을 지원
  • SMTP 통신 연결을 위한 프록시 지원
  • ES6 Code 지원.

 

 

내가 작성한 node-mail의 예시

 

1. 랜덤 숫자를 생성해서 보안코드 변수에 담기

2. auth를 env 파일을 통해서 암호화 한후에 email을 보내기

3. mailOptions는 해당 이메일을 받을 사람입장에서 어떤식으로 보여줄지를 정하는 부분

4. 콜백 함수를 통해서 이메일의 수신 여부 체크

 

router.post("/email-auth", async (req, res) => {
  const { email } = req.body;

  // 보안코드 랜덤 생성
  const generateRandom = (min, max) => {
    let ranNum = Math.floor(Math.random() * (max - min + 1)) + min;
    return ranNum;
  };

  const SecurityCode = generateRandom(111111, 999999);
  console.log("SecurityCode:", SecurityCode);

  // 노드 메일 보내는 email
  let transporter = nodemailer.createTransport({
    service: "Gmail",
    auth: {
      user: process.env.NODE_MAILER_USER,
      pass: process.env.NODE_MAILER_PASS,
    },
    tls: {
      rejectUnauthorized: false,
    },
  });

  const mailOptions = await transporter.sendMail({
    from: process.env.NODE_MAILER_USER,
    to: email,
    subject: "보안코드 입니다",
    text: "오른쪽 숫자 6자리를 입력해주세요" + SecurityCode,
  });
  console.log("mailOptions:", mailOptions);

  // 메일이 보내진 후의 콜백 함수
  transporter.sendMail(mailOptions, (err) => {
    if (err) res.send(err);
    else
      res
        .status(200)
        .json({ isMailSucssessed: true, SecurityCode: SecurityCode });
  });
});