Как использовать HTML-файлы извне в nodejs (не внутренний HTML)? - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу отправить несколько писем с помощью nodejs.В настоящее время я использую HTML-код внутри скрипта Nodejs в Route.Но когда html становится большим, файл Nodejs также становится огромным, и его нельзя обслуживать.

Итак, как я могу использовать html-файлы извне?

Я использую nodemailer код извне.Например, я также хочу использовать html файл извне (/api/htmls/registerEmail.html).Но файл html также использует данные тела (req.body.fname)

mailSender.js (/ api / routs / r_msg /)

var nodemailer = require('nodemailer');

function sendMail(to, msg, subject)    
{

  var transporter = nodemailer.createTransport({

  host: 'smtp.zoho.com',
    port: 465,
    secure: true,
    auth: {
      user: 'sample@sample.com',
      pass: 'password'
    }
});

var mailOptions = {
  from: 'sample@sample.com',
  to:to,
  subject: subject,
  html: msg,
};

transporter.sendMail(mailOptions, function(error, info)
{
  if (error)
  {
    console.log(error);
  } 
})

}

module.exports.sendMail = sendMail;

register.js (/ api / маршруты /)

const express = require('express');
const router = express.Router();
const app = express();
const sendMail = require("../api/routes/r_msg");

router.post("/register/new", (req, res) =>
{
    const newStudent = new Student(
    {
        fname: req.body.fname,
        lname: req.body.lname,
        contact_no: req.body.lname,
        email : req.body.email
    });

    newStudent.save()
    .then(student =>
    {
        if (student)
        {
            //This line want to change
            var html = `<html> <body> Hello ` + req.body.fname + `Welcome </body> </html>`;

            sendMail.sendMail(req.body.email, html, 'Success');
            res.status(200).send(setting.status("Success")
            console.log('Email sent: ' + info.response);
        }

    });
}

1 Ответ

0 голосов
/ 15 февраля 2019

Как уже упоминалось в комментарии, вы можете решить эту проблему с помощью ejs .

Добавьте это в ваш register.js :

const ejs = require('ejs');
const promisify = require('util').promisify;
const renderFile = promisify(ejs.renderFile);

// inside route handler:

renderFile(__dirname + "/api/htmls/registerEmail.html", {fname: req.body.fname})
    .then(html => {
        sendMail.sendMail(req.body.email, html, 'Success');        
    })
    .catch(error => {
        // handle error
    })

Шаблон электронной почты registerEmail.html

<html> <body> Hello <%= fname %> Welcome </body> </html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...