Timpossible history

[Node JS] Nodemailer 사용 시 필요한 앱 비밀번호 설정 본문

백엔드/Node JS

[Node JS] Nodemailer 사용 시 필요한 앱 비밀번호 설정

팀파서블 2023. 12. 31. 18:40
  • 앱 비밀번호가 필요한 이유
  • 앱 비밀번호 설정 방법

앱 비밀번호가 필요한 이유

Nodemailer를 사용해서 이메일을 보내는 기능을 구현한 웹사이트나 어플리케이션은 보안이 중요하다. 웹사이트든 어플리케이션이든 이메일을 보내려면 계정이 필요하니 소스코드에 계정과 비밀번호를 기록해놓아야 하는데 이는 보안에 다소 문제가 생길 수 있기에 계정의 비밀번호가 아닌, 계정의 부분적인 권한을 허가받은 어플리케이션 전용 비밀번호를 발급받아서 사용하는 것이 좋다.

  • 보안 강화
  • 권한 제어
  • 계정 보호
  • 2단계 인증 활성화

보통 사용자들은 gmail이든 naver든 인스타그램이든 그 어떤 계정을 같은 아이디와 비밀번호로 사용하는게 대부분이니 하나의 계정이 뚫리면 나의 개인정보가 담긴 모든 계정들이 같이 뚤릴 수 있기 때문에 보안을 더 강화시키고 앱 비밀번호를 쓴다고 보면 되겠다.

 

앱 비밀번호 설정 방법

  • Gmail 계정 로그인한다.
  • 우측 상단에 프로필 클릭한 후, '구글 계정 관리'를 클릭한다.

  • 간단하게, '앱 비밀번호'를 검색한다.

  • 계정 인증을 하라고 한다면 인증을 하고 들어간 후, 앱 이름을 설정해주고 앱 비밀번호를 받는다

  • 16자리의 앱 비밀번호가 나오면, 잘 메모해놓고 고이 모셔놓는다(한 번 밖에 안 보여주니까 정신차려야 한다.)

 

Nodemailer에서 앱 비밀번호 설정

const nodemailer = require('nodemailer');

// Gmail 앱 비밀번호로 로그인할 transporter 생성
const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'your.email@gmail.com',
    pass: 'your-app-specific-password', // Gmail에서 생성한 앱 비밀번호
  },
});

// 이메일 전송 설정
const mailOptions = {
  from: 'your.email@gmail.com',
  to: 'recipient.email@example.com',
  subject: '테스트 이메일',
  text: '안녕하세요, 이것은 테스트 이메일입니다.',
};

// 이메일 전송
transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    console.error('이메일 전송 실패:', error);
  } else {
    console.log('이메일 전송 성공:', info.response);
  }
});

 

이렇게 사용자의 계정과 앱 비밀번호를 설정해주면 완료.

 

보안 강화

앱 비밀번호는 주기적으로 변경해서 설정해주면 보안이 더욱 강화된다.