본문 바로가기

개발/Node.js

[Node.js] nodemailer 사용하기

1. 서론

nodemailer는 node.js 서버를 이용하여 mail을 보낼 수 있게 해주는 모듈이다. 대체적으로 node.js 서버를 구현할 때 개인정보 인증으로 이메일 인증을 진행할 때 많이 사용한다. 글쓴이도 사용자 회원가입 후 이메일 인증 그리고 비밀번호 변경 시에 nodemailer를 이용하여 이메일 인증 기능을 구현한 적이 있다. nodemailer는 gmail 계정이 존재해야 사용할 수 있다.(이메일을 보낼 계정이 있어야 하므로) 구현 자체는 어렵지 않으나 gmail 계정의 설정을 변경해야 한다. 

2. Gmail 계정 설정

전제 조건
Gmail 계정이 존재한다고 가정한다.

nodemailer의 계정으로 사용할 계정으로 google 로그인을 진행한 후 아래의 첫 번째 링크를 클릭하여 액세스를 허용시킨다. 첫 번째 만으로 되는 경우도 있지만 간혹 제대로 nodemailer가 작동하지 않는 경우는 아래의 두 번째 링크 또한 허용하기 바란다.

https://myaccount.google.com/lesssecureapps

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

accounts.google.com/DisplayUnlockCaptcha

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

3. nodemailer로 이메일 전송하기

우선 이메일을 보낼 transport를 생성하고 mail을 보낼 수 있다. 첨부 파일 등의 기능도 존재하지만 이번 글에서는 이메일의 제목과 내용을 보내는 코드만 작성했다.

// email.js

const nodemailer = require("nodemailer");

// 본인 Gmail 계정
const EMAIL = "your_gmail_account@gmail.com";
const EMAIL_PW = "your_gmail_password";

// 이메일 수신자
let receiverEmail = "receiver's email";

// transport 생성
let transport = nodemailer.createTransport({
    service: "gmail",
    auth: {
        user: EMAIL,
        pass: EMAIL_PW,
    },
});

// 전송할 email 내용 작성
let mailOptions = {
    from: EMAIL,
    to: receiverEmail,
    subject: "[nodemailer] Sample Email",
    html: "<h1>Hello, World!</h1>",
};

// email 전송
transport.sendMail(mailOptions, (error, info) => {
    if (error) {
        console.log(error);
        return;
    }

    console.log(info);
    console.log("send mail success!");
});

[참고]

nodemailer.com/about/

 

Nodemailer :: Nodemailer

Nodemailer Nodemailer is a module for Node.js applications to allow easy as cake email sending. The project got started back in 2010 when there was no sane option to send email messages, today it is the solution most Node.js users turn to by default. Nodem

nodemailer.com

 

'개발 > Node.js' 카테고리의 다른 글

[Node.js] express cors 사용하기  (0) 2021.01.29
[Node.js] mysql을 async/await로 처리하기  (0) 2021.01.29
[Node.js] moment 사용하기  (0) 2021.01.27
[Node.js] express router 사용하기  (0) 2021.01.27
[Node.js] express 사용하기  (0) 2021.01.27