백엔드/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);
}
});
이렇게 사용자의 계정과 앱 비밀번호를 설정해주면 완료.
보안 강화
앱 비밀번호는 주기적으로 변경해서 설정해주면 보안이 더욱 강화된다.