Nodemailer를 사용한 Gmail SMTP 인증 이슈 해결

henry·2025년 2월 6일

Gmail 계정을 이용해 이메일을 보내는 과정에서 SMTP 인증 오류가 발생했습니다.
인증 오류에 대한 원인 분석과 함께 문제를 해결하는 과정을 이미지와 함께 정리했습니다.

Gmail 계정으로 이메일을 보내기 위해 Nodemailer를 사용 중인데, Gmail의 보안 설정이 원인으로 인해 인증에 실패했음을 알려주고 있습니다. Gmail은 2단계 인증이 활성화된 경우, 앱 비밀번호를 사용해야 합니다.


📌 원인 분석

Error: Invalid login: 534-5.7.9 Application-specific password required
  • 이 메시지는 Gmail의 보안 정책 때문에 일반 비밀번호로 SMTP 인증이 차단되었음을 의미합니다.
  • Gmail 계정에서 앱 비밀번호(App Password)를 생성하고 이를 사용해야 Nodemailer에서 인증이 가능합니다.

📌 방법

1️⃣ 2단계 인증 활성화

  • 2단계 인증을 사용하도록 설정합니다.



2️⃣ 앱 비밀번호 생성

  • 보안 탭에서 앱 비밀번호를 검색하여 앱 비밀번호 설정 페이지로 이동합니다.

  • 사용할 앱 이름을 작성 후, 하단의 만들기 버튼을 클릭합니다.

  • 생성된 앱 비밀번호를 복사하여 프로젝트에 적용하면 됩니다.

3️⃣ Nodemailer 설정

  • .env 설정 파일
EMAIL_ADDRESS=vedivero73@gmail.com
EMAIL_PASSWORD=************
  • 소스 코드

    import nodemailer from 'nodemailer';
    
    const transporter = nodemailer.createTransport({
       service: 'gmail',
       auth: {
          user: process.env.EMAIL_ADDRESS,
          pass: process.env.EMAIL_PASSWORD,
       },
    });
    
    async function sendTestEmail() {
       try {
          const info = await transporter.sendMail({
             from: process.env.EMAIL_ADDRESS,
             to: 'recipient@example.com',
             subject: 'Test Email',
             text: 'Hello, this is a test email from Nodemailer!',
          });
          console.log('Email sent:', info.response);
       } catch (error) {
          console.error('Error sending email:', error);
       }
    }
    
    sendTestEmail();

📌 테스트 결과


📌 결론

  • 문제 원인
    • Gmail 보안 정책으로 인해 SMTP 인증이 차단
  • 해결 방법
    • Gmail 계정에서 2단계 인증 활성화앱 비밀번호 생성 후, Nodemailer에서 사용.

0개의 댓글