NodeJs에서 NodeMailer를 사용하여 이메일을 보내는 방법

6400 단어
nodejs에서 이메일을 보내려면 NodeMailer가 필요합니다. Nodemailer는 다음을 가능하게 하는 모듈입니다.
메일 전송이 가능한 SMTP(Simple Mail Transfer Protocol)를 통해 번거로움 없이 쉽게 이메일을 보낼 수 있습니다.
서버 내의 메시지.

인터넷을 통해 메일을 보내는 대부분의 이메일 시스템은 SMTP를 지원하고 허용합니다.
따라서 SMTP는 NodeMailer가 메일을 보내는 데 사용하는 기본 전송입니다.

이 기사에서는 Gmail 계정을 사용하여 NodeMailer를 통해 이메일을 보내는 방법을 이해합니다.

자, 이제 프로젝트를 생성하고

npm init -y


그런 다음 Nodemailer, Express 및 nodemon 패키지가 필요합니다. 이 명령으로 설치합시다.

npm i --save nodemailer express 


파일을 변경할 때마다 서버를 계속 실행하지 않으려면 Nodemon을 설치해야 합니다.
서버 실행 중.

npm i --save-dev nodemon


루트 디렉토리에서 index.js라는 js 파일을 하나 만듭니다.

//index.js

const express = require('express'),
const path = require('path'),
const nodeMailer = require('nodemailer');

const app = express();


또한 환경 변수로 알려진 .env라는 비밀 키를 저장하는 파일을 만듭니다.

//.env

PORT = 3540
EMAIL = [email protected]
PASSWORD = @#R!*9ewbd32~(



   const port = process.env.PORT || 4300


   app.listen(port, function(req, res){
      console.log(`Server is running on localhost:${port}`);
    });


이것은 우리 프로젝트를 시작하기 위한 것입니다. 우리가 해야 할 또 다른 일은 package.json 파일에서 시작 스크립트를 수정해야 한다는 것입니다.

//패키지.json

"scripts": {
    "start": "nodemon index"
  },


따라서 노드 서버를 시작해야 할 때 다음 명령을 작성해야 합니다.

npm start


그런 다음 파일을 변경하면 계속해서 서버가 자동으로 다시 시작됩니다.

EJS를 템플릿 엔진으로 사용합니다.
다음 명령을 입력하여 ejs(embedded javascript)라는 템플릿 엔진을 설치해야 합니다.

npm i --save ejs


public이라는 루트 폴더에 하나의 디렉터리를 만듭니다.

//index.js에서 다음을 수행합니다.

app.set('view engine', 'ejs');
app.use(express.static('public'));


이제 우리는 공용 디렉터리에서 정적 파일을 제공하기 위해 응용 프로그램에 대한 ejs 템플릿 엔진을 설정했습니다.

또한 루트 폴더에 Views라는 디렉터리를 만들어야 합니다. 그 안에 index.ejs라는 파일을 만듭니다.

//index.ejs

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Nodemailer</title>

  </head>
  <body>
    <div class="container">
      <div class="seyi">
        Sending Email using NodeMailer
      </div>
    </div>

    <div class="container"><br />
      <h1>Send The Email</h1><br />
      <form action="/send-email" method="post">
        <div class="row">
            <label for="to">To:</label>
            <input type="email" class="form-control" name="to">
          </div>

        <div class="row">
            <label for="subject">Subject:</label>
            <input type="text" class="form-control" name="subject">
        </div>

        <div class="row">
              <label for="body">Body:</label>
              <textarea cols="5" rows="5"class="form-control" name="body"></textarea
        </div>

        <div class="row">
            <button type="submit" class="btn btn-success">Send</button>
        </div>
      </form>
    </div>
  </body>
</html>


당신은 당신을 위해 그것을 스타일링하기 위해 프론트 녀석들에게 이것을 줄 수 있습니다.

그런 다음 index.js로 돌아와 다음 코드를 입력하여 홈 페이지에 대한 하나의 경로를 만듭니다.

//index.js

app.get('/',  (req, res) {
   res.render('index');
});


다음 명령으로 서버를 시작할 수 있습니다.

npm start


포트 3000에서 시작됩니다. URL로 전환: http://locahost:3540

이제 expressjs에서 이메일을 보내려면
그럼에도 불구하고 서버 측에서 모든 필드 데이터를 가져오려면 body-parser 패키지를 설치해야 합니다.

따라서 이 명령을 사용하여 설치하십시오.

npm i body-parser --save


이제 익스프레스 프레임워크에서 이 패키지를 사용하도록 합시다.

//index.js

const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());


다음은 폼으로 보낸 포스트 요청에 대한 라우트를 생성하고 데이터를 처리하는 것입니다.
따라서 최종 server.js 파일은 다음과 같습니다.

//index.js

const bodyParser = require('body-parser');

const app = express();



    app.set('view engine', 'ejs');
    app.use(express.static('public'));
    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());



이제 이메일을 보내는 데 사용할 함수를 작성해 보겠습니다.

    app.post('/send-email',  (req, res) {
      const transporter = nodeMailer.createTransport({
          host: 'smtp.gmail.com',
          port: 465,
          secure: true,
          auth: {
              user: process.env.EMAIL,
              pass: process.env.PASSWORD,
          }
      });
      const messages = {
          from: process.env.EMAIL,
          to: req.body.to,
          subject: req.body.subject,
          text: req.body.body,
      };

      transporter.sendMail(messages, (error, info) => {
          if (error) {
              return console.log(error);
          }
          console.log('Message %s sent: %s', info.messageId, info.response);
              res.render('index');
          });
      });


이제 Gmail 계정에서 PASSWORD(토큰)를 생성하는 방법을 보여 드리겠습니다. 일반 비밀번호를 사용하지 말고 로그인해야 합니다.
일반 암호로 토큰을 생성합니다.

Gmail 계정에 로그인할 때. 검색창에 APP PASS를 입력합니다. 토큰을 생성할 위치에 나타납니다.
여기에서는 Gmail을 통해 이메일을 보내는 방법을 보여주었습니다. 다른 호스트를 사용할 수 있습니다. 먼저 API 키를 가져와야 합니다.

읽어 주셔서 감사합니다

좋은 웹페이지 즐겨찾기