기억 휘발 방지소

[Node.js] Nodemailer로 이메일 전송하기 with Gmail 본문

Web/Node.js

[Node.js] Nodemailer로 이메일 전송하기 with Gmail

choice91 2021. 10. 19. 16:04
728x90
반응형

📌 Nodemailer

Nodemailer는 쉽게 이메일을 보낼 수 있도록 하는 Node.js 애플리케이션용 모듈이다.

 

📌 설치

npm i nodemailer

 

📌 사전작업

1. '구글로그인 > Google 계정 관리 > 보안 > Google에 로그인'에서 2단계 인증설정

2. 앱 비밀번호 설정

앱 비밀번호를 메일, Windows 컴퓨터로 설정하고 생성

생성된 비밀번호는 밑에서 transport 객체를 생성할 때 사용한다.

 

📌 1. 전송 옵션 설정

createTransport메소드로 옵션을 설정한 후 전송객체 생성

gmail로 이메일을 보낼거라서 service를 gmail로 설정했다.

auth.pass에는 위에서 생성한 앱 비밀번호를 넣어준다.

const transporter = nodemailer.createTransport({
  service: "gmail",  // 이메일
  auth: {
    user: process.env.MAIL_ID,  // 발송자 이메일
    pass: process.env.MAIL_PASSWORD,  // 발송자 비밀번호
  },
});

 

📌 2. 메일 전송

const mailOptions = {
  from: process.env.MAIL_ID,
  to: email,
  subject: "이메일 인증",
  html: `<h1>이메일 인증</h1>
          <div>
            아래 버튼을 눌러 인증을 완료해주세요.
            <a href='http://localhost:4000/auth/verification/${user._id}'>이메일 인증하기</a>
          </div>`,
  text: "인증메일입니다.",
};
const info = await transporter.sendMail(mailOptions);
console.log(info);
  • from: 보내는사람 이메일
  • to: 받는사람 이메일
  • subject: 이메일 제목
  • html: 보내는 이메일 내용 (html로 작성된 내용)
  • text: 보내는 이메일의 내용 (일반 text로 작성된 내용)

메일이 정상적으로 발송되었다면 info에 sendMail은 아래 내용을 반환한다.

{
  accepted: [ '받는사람 이메일' ],
  rejected: [],
  envelopeTime: 654,
  messageTime: 706,
  messageSize: 682,
  response: '250 2.0.0 OK  1634556416 s3sm2349945pfu.84 - gsmtp',
  envelope: { from: '보낸사람 이메일', to: [ '받는사람 이메일' ] },
  messageId: '<3b131677-e533-a07e-f51c-5d4b3cdf47ee@gmail.com>'
}

 

728x90
반응형