ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NodeJS] 메일 전송 기능 구현 - Nodemailer + Gmail
    Language/NodeJS 2021. 6. 27. 13:51

    Nodemailer는 기본적으로 Node.js 사용자가 메일 전송 기능구현을 위해서 기본적으로 사용하는 모듈이라고 합니다.

    https://nodemailer.com/about/

     

    0. Gmail권한 설정하기

     

    * 추후 기능 구현중 접근 관련 오류가 발생할 수 있으므로 여기 링크에서 '보안 수준이 낮은 앱 허용'을 사용으로 바꿔줘야 합니다. 

    그리고 내 구글 계정에 대한 액세스를 허용해줘야 하기 때문에 

    https://accounts.google.com/DisplayUnlockCaptcha 해당 링크에서 '계속'을 눌러서 허용해줘야 합니다.

     

    1. nodemailer 모듈 설치

    $ npm install nodemailer

     

    2. nodemailer 모듈 불러오기

    const nodemailer = require('nodemailer');

     

    3. config 설정

    const transporter = nodemailer.createTransport({
        service: 'gmail',
        host: 'host 메일 주소',
        port: 587,
        secure: false,
        auth: {
            user: '메일 주소',
            pass: '메일 비밀번호',
        },
    });

     

    4. 메일 전송 기능 구현

    const info = await transporter.sendMail({
                from: `"Airbnb clone" <${process.env.NODEMAILER_USER}>`,	// 보내는 사람
                to: getUserEmail[0].email,	// 받는 사람
                subject: 'Airbnb Reservation Complete info',	// 제목
                text: '',	// 내용
                html: `
                        <h1>Reservation Complete</h1><br>
                        <b>Room Name: ${checkRooms[0].title}</b><br>
                        <b>Room Location: ${checkRooms[0].locationName}</b><br>
                        <b>Date: ${checkReservations[0].startDate} ~ ${checkReservations[0].endDate}</b><br>
                    `,	// html로 표현한 내용
            });

     

    저는 에어비앤비 기능 구현 시 사용했기에 위와 같이 코드를 작성했었습니다.

    html 부분에 내용을 작성한다면 text 부분은 작성하지 않아도 됩니다.

     

     

    - 전체 코드

    const nodemailer = require('nodemailer');
    
    const transporter = nodemailer.createTransport({
        service: 'gmail',
        host: 'host 메일 주소',
        port: 587,
        secure: false,
        auth: {
            user: '메일 주소',
            pass: '메일 비밀번호',
        },
    });
    
    const info = await transporter.sendMail({
                from: `"Airbnb clone" <${process.env.NODEMAILER_USER}>`,	// 보내는 사람
                to: getUserEmail[0].email,	// 받는 사람
                subject: 'Airbnb Reservation Complete info',	// 제목
                text: '',	// 내용
                html: `
                        <h1>Reservation Complete</h1><br>
                        <b>Room Name: ${checkRooms[0].title}</b><br>
                        <b>Room Location: ${checkRooms[0].locationName}</b><br>
                        <b>Date: ${checkReservations[0].startDate} ~ ${checkReservations[0].endDate}</b><br>
                    `,	// html로 표현한 내용
            });

     

    기능 구현이 완료된다면 아래 사진과 같이 정상적으로 메일이 오는 것을 확인하실 수 있습니다.

     

     

    참고자료

    https://devlog-wjdrbs96.tistory.com/234

    https://velog.io/@josworks27/Back-end-Node.js%EC%97%90%EC%84%9C-%EB%A9%94%EC%9D%BC-%EC%A0%84%EC%86%A1%ED%95%98%EA%B8%B0-feat.-Nodemailer-Gmail

    'Language > NodeJS' 카테고리의 다른 글

    [Yarn] Node Version 강제하기  (0) 2024.02.15
    NodeJS - Event Loop  (0) 2021.12.10
    [NodeJS] crypto Module을 이용한 단방향 암호화  (0) 2021.07.20
Designed by Tistory.