본문 바로가기

TIL

[TIL] 2024-02-27 nodemailer 이슈

오늘의 이슈

 

팀프로젝트에  nodemailer 를 사용하기 위해 설치하고 코드를 작성 후 실행해보니

Error: Invalid login: 535-5.7.8 Username and Password not accepted

 

이런 오류가 발생했다.

 

찾아보니 구글 계정의 보안 상 이슈인듯 했다.

 

이 팀프로젝트에 노드메일러를 사용하기 위해 새로 아이디를 만들었는데 보안 수준이 낮아서 적용이 안되는거라

 

결국 2차인증까지 했다.

 

그런데도 오류가 또 발생했다.

 

추가적으로 다시 찾아보니 2차 인증 후 앱 비밀번호를 생성해서 해결하는거였다.

(앱비밀번호란 ? 보안 수준이 낮은 앱 또는 기기에 구글 계정에 대한 액세스 권한을 부여하는 번호 = 노출되면 큰일남 )

 

그래서 앱 비밀번호 만들고 .env에 추가해준다음 

 

import nodemailer from "nodemailer";
import dotenv from "dotenv";

dotenv.config();

const { EMAIL_USER, EMAIL_PASS } = process.env;

const transporter = nodemailer.createTransport({
  service: "gmail",
  auth: {
    user: EMAIL_USER,
    pass: EMAIL_PASS,
  },
});

export default async function emailSender(emails, userId) {
  const template = `
  ...생략
  </html>
`;

  for (const email of emails) {
    const mailOptions = {
      from: process.env.EMAIL_USER,
      to: email,
      subject: `🎉 Welcome! 환영합니다!`,
      html: template,
    };

    transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
        console.error(error);
      } else {
        console.log("Email Sent : ", info);
      }
    });
  }
}

 

요런식으로 코드 작성해서 이메일 보내줬다.

 

간단한 오류였으나 코드 잘못짠줄알고 안찾아보고 코드만 열심히 뜯어보면서 시간 좀 많이 날렸다.