개발 창고/NodeJS

[Mail] nodemailer - 메일 발송하기

로이제로 2022. 12. 30. 22:00
반응형
// npm install nodemailer
const nodemailer    = require("nodemailer");

(async() => {
    const host          = "smtp.naver.com";
    const sender        = {이메일주소};
    const senderPwd     = {이메일비밀번호};
    const emailTo       = [{받는 사람 이메일 #1}, {받는 사람 이메일 #2}, ...];
    const subject       = {메일 제목};
    const contents	    = {메일 내용};

    // Step. 메일 전송 옵션 설정
    let transporter = nodemailer.createTransport({
        host    : host
      , port    : 587
      , secure  : false
      , auth    : {
            user: sender
          , pass: senderPwd
        }
      , tls     : {
            rejectUnauthorized: false
        }
    });

    // Step. 메일 발송
    try{
        let info = await transporter.sendMail({
          from    : sender		// 보내는 사람 이메일
        , to      : emailTo		// 받는 사람 이메일
        , subject : subject		// 메일 제목
        // 메일 내용
        // , text: contents     // text: 일반 text로 작성된 내용
        , html: contents		// html: html로 작성된 내용
        });

        console.log(info);
    }catch(e){
        console.log(e);
    }
})();

 

※ 해당 내용은 공홈 기반으로 작성된 내용입니다.

https://nodemailer.com/usage/

 

Usage :: Nodemailer

Usage Setting it up Install Nodemailer from npm To send emails you need a transporter object let transporter = nodemailer.createTransport(transport[, defaults]) Where transporter is going to be an object that is able to send mail transport is the transport

nodemailer.com


1/ nodemailer를 설치해 줍니다.

 

$> npm install nodemailer

 


2/ nodemail API를 Import 해줍니다.

 

const nodemailer    = require("nodemailer");


3/ 메일에 사용될 내용을 변수로 선언해 줍니다.

 

※ 저는 테스트를 위해 naver의 smtp를 사용하였으며, 공홈 등에서는 gmail을 이용하였으니 참고 바랍니다.


const host                = "smtp.naver.com";
const sender            = {이메일주소};
const senderPwd     = {이메일비밀번호};
const emailTo          = [{받는 사람 이메일 #1}, {받는 사람 이메일 #2}, ...];
const subject           = {메일 제목};
const contents         = {메일 내용};


4/ 메일 전송을 위한 Connection 정보를 선언해 줍니다.


let transporter = nodemailer.createTransport({
    host    : host
  , port    : 587
  , secure  : false
  , auth    : {
        user: sender
      , pass: senderPwd
    }
  , tls     : {
        rejectUnauthorized: false
    }
});

 

Parameter 내용 ex
host smtp 주소입니다. smtp.naver.com
port smtp 포트입니다. 587
secure true인 경우 서버에 연결할 때 연결에서 TLS를 사용합니다. false(기본값)이면 서버가 STARTTLS 확장을 지원하는 경우 TLS가 사용됩니다. 대부분의 경우 포트 465에 연결하는 경우 이 값을 true로 설정합니다. 포트 587 또는 25의 경우 false로 유지합니다. false
auth smtp 서버에 로그인 되는 계정입니다. (일반적으로 이메일 주소와 비밀번호) auth : {
  user: "test@naver.com"
, pass: "test1234"
}
tls 소켓 생성 시 전달할 추가 node.js TLSSocket 옵션을 정의합니다. tls : {
  rejectUnauthorized: false
}

여기서 rejectUnauthorizeds는 메일 발송 시 "self signed certificate"가 발생하는 경우 처리 가능한 방법 중 하나입니다.


5/ 메일 발송을 합니다.

 

let info = await transporter.sendMail({
    from     : sender          // 보내는 사람 이메일
  , to         : emailTo         // 받는 사람 이메일
  , subject : subject          // 메일 제목
  // 메일 내용
  // , text    : contents       // text: 일반 text로 작성된 내용
  , html      : contents       // html: html로 작성된 내용
});

 

Parameter 내용 ex
form 보내는 사람 메일 주소로 smtp 설정에서 사용한 from이 동일학 들어가도록 합니다. test@naver.com
to 받는 사람 메일 주로로
단일로 보내는 경우 string 형태로, 다중으로 보내는 경우 array 형태로 발송 가능합니다.
단일
"recv@naver.com"

다중
["recv1@naver.com", "recv2@naver.com", "recv3@naver.com"]
subject 메일 발송시 사용된느 제목입니다. 안녕하세요. 메일 제목입니다.
text 메일 내용이 단순 텍스트인 경우 해당 옵션을 사용하고, html 형태인 경우 html을 사용합니다. Hello, World
html 메일 내용이 html형태인 경우 해당 옵션을 사용하고, 단순 텍스트인 경우 text를 사용합니다. <strong>Hello, World</strong>

반응형