UroA 개발 블로그

[Node.js] nodemailer 를 사용하여 이메일 전송하기 본문

Programming/Node.js

[Node.js] nodemailer 를 사용하여 이메일 전송하기

UroA 2016. 10. 21. 15:20

nodemailer 를 사용하여 이메일 전송하기




 약 1년전 동아리에서 회원가입시 이메일 인증을 구현하기 위해 사용했던 모듈인데 이번에 다시 사용할 일이 생겨서 저번 코드를 참고하여 작성했더니 에러가 발생했습니다. 확인해보니 1년전에는 0.7.1 버전이였고, 새로 설치한 버전은 2.6.0 버전이였습니다. 그래서 새로 코드를 작성하였고 새로운 버전으로 작성한 코드는 다음과 같습니다. (Google smtp를 사용했습니다.)

module.exports = function () {
  const config = require('../config/config');
  const nodemailer = require('nodemailer');
 
  let mailer = {
    sendMail: function (targetEmail, link) {
      return new Promise((_s, _f) => {
        let transporter = nodemailer.createTransport(smtpTransport({
          host: 'smtp.gmail.com',
          auth: {
            user: '보내는사람@gmail.com',
            pass: 'pass'
          }
        }));

        let mailOptions = {
          from: '보내는사람@gmail.com',
          to: '받는사람@gmail.com',
          subject: '이메일 제목',
          text: '이메일 내용',
        };

        transporter.sendMail(mailOptions, function (err, info) {
          if (err) {
            console.error(err);
            _f();
          }
          console.log('Mail send success - ', info.response);
          transporter.close();
          _s();
        });
      });
    }
  };


 직접적으로 파일에 넣지 않고 'mailer.js' 라는 파일을 생성하여 필요한부분에서 사용하는식으로 하였습니다. 추가적으로 필요한 기능은 https://github.com/nodemailer/nodemailer를 참고하면 될것같습니다.


* 작년에 이어 같은 이메일 계정을 사용했기 때문에 SMTP 설정을 다시 할 필요는 없었지만, 아마 처음하시는 분들은 gmail 에서 로그인하여 따로 설정이 필요합니다.


https://support.google.com/mail/answer/78799 참고하여 설정을 하면 됩니다. 설정 후에도 안된다면 https://www.google.com/settings/security/lesssecureapps 에서 계정의 보안설정을 낮추어주면 될것입니다.



Comments