#node.js
#node.js
Вопрос:
Шаблоны находятся в views/email
каталоге filename index.hbs
, а имя файла макета находится layout.hbs
в views/email
каталоге, а детали — в views/email/patrtials
каталоге.
Если поместить расширение макета так, как layout.hbs
показано, ошибка ann layout.handlebars
не найдена. Если задано как layout.handlebars
, ошибка не отображается. Но всегда получаю эту ошибку {"errno":-2,"code":"ENOENT","syscall":"open","path":"/home/user/Documents/Master Project/views/email/index.hbs"}
Для отправки моей почты я использовал nodemailer
пакет npm, а также установил nodemailer-express-handlebars
для компиляции шаблон hanldebars
Это мой код
const nodemailer = require("nodemailer");
const hbs = require("nodemailer-express-handlebars");
var transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: process.env.MAIL,
pass: process.env.PASS,
},
});
var options = {
viewEngine: {
extName: ".hbs" /* or '.handlebars' */,
viewPath: __dirname "/views/email/",
layoutsDir: __dirname "/view/email",
defaultLayout: "layout",
partialsDir: __dirname "/views/email/partials/",
},
viewPath: "views/email/",
};
transporter.use(
"compile",
hbs({
viewEngine: {
extName: ".hbs",
viewPath: "../views/email/",
layoutsDir: "../views/email/",
defaultLayout: "layout",
partialsDir: "../views/email/partials/",
},
viewPath: "../views/email",
extName: ".hbs",
})
);
router.get("/mail", (req, res) => {
let mailOptions = {
from: process.env.FROMMAIL,
to: "req.body.email",
subject: "Testing",
template: "index",
};
transporter.sendMail(mailOptions, (error, data) => {
if (error) return res.send(error);
res.send("Mail Send");
});
});